Kivy - 我的 ScrollView 不滚动
Kivy - My ScrollView doesn't scroll
我在使用 Kivy 库的 Python 应用程序中遇到问题。特别是我试图在 TabbedPanelItem 中创建一个可滚动的元素列表,但我不知道为什么我的列表不滚动。
这是我的 kv 文件:
#:import sm kivy.uix.screenmanager
ScreenManagement:
transition: sm.FadeTransition()
SecondScreen:
<SecondScreen>:
tabba: tabba
name: 'second'
FloatLayout:
background_color: (255, 255, 255, 1.0)
BoxLayout:
orientation: 'vertical'
size_hint: 1, 0.10
pos_hint: {'top': 1.0}
canvas:
Color:
rgba: (0.98, 0.4, 0, 1.0)
Rectangle:
pos: self.pos
size: self.size
Label:
text: 'MyApp'
font_size: 30
size: self.texture_size
BoxLayout:
orientation: 'vertical'
size_hint: 1, 0.90
Tabba:
id: tabba
BoxLayout:
orientation: 'vertical'
size_hint: 1, 0.10
pos_hint: {'bottom': 1.0}
Button:
background_color: (80, 1, 0, 1.0)
text: 'Do nop'
font_size: 25
<Tabba>:
do_default_tab: False
background_color: (255, 255, 255, 1.0)
TabbedPanelItem:
text: 'First_Tab'
Tabs:
TabbedPanelItem:
text: 'Second_Tab'
Tabs:
TabbedPanelItem:
text: 'Third_Tab'
Tabs:
<Tabs>:
grid: grid
ScrollView:
scroll_timeout: 250
scroll_distance: 20
do_scroll_y: True
do_scroll_x: False
GridLayout:
id: grid
cols: 1
spacing: 10
padding: 10
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
这是我的 .py 代码:
__author__ = 'drakenden'
__version__ = '0.1'
import kivy
kivy.require('1.9.0') # replace with your current kivy version !
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.properties import StringProperty, ObjectProperty,NumericProperty
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.utils import platform
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.scrollview import ScrollView
class Tabs(ScrollView):
def __init__(self, **kwargs):
super(Tabs, self).__init__(**kwargs)
class Tabba(TabbedPanel):
pass
class SecondScreen(Screen):
pass
class ScreenManagement(ScreenManager):
pass
presentation = Builder.load_file("layout2.kv")
class MyApp(App):
def build(self):
return presentation
MyApp().run()
Where/What我做错了吗?
(也接受 UI 改进意见和建议)
我自己已经有一段时间没有使用 kivy 但如果我记得很清楚的话:
因为 ScrollView 中的布局应该比滚动视图大
例如 ScrollView 宽度:1000px,GridView 1100px。
所以它可以滚动 100px
我在使用 Kivy 库的 Python 应用程序中遇到问题。特别是我试图在 TabbedPanelItem 中创建一个可滚动的元素列表,但我不知道为什么我的列表不滚动。
这是我的 kv 文件:
#:import sm kivy.uix.screenmanager
ScreenManagement:
transition: sm.FadeTransition()
SecondScreen:
<SecondScreen>:
tabba: tabba
name: 'second'
FloatLayout:
background_color: (255, 255, 255, 1.0)
BoxLayout:
orientation: 'vertical'
size_hint: 1, 0.10
pos_hint: {'top': 1.0}
canvas:
Color:
rgba: (0.98, 0.4, 0, 1.0)
Rectangle:
pos: self.pos
size: self.size
Label:
text: 'MyApp'
font_size: 30
size: self.texture_size
BoxLayout:
orientation: 'vertical'
size_hint: 1, 0.90
Tabba:
id: tabba
BoxLayout:
orientation: 'vertical'
size_hint: 1, 0.10
pos_hint: {'bottom': 1.0}
Button:
background_color: (80, 1, 0, 1.0)
text: 'Do nop'
font_size: 25
<Tabba>:
do_default_tab: False
background_color: (255, 255, 255, 1.0)
TabbedPanelItem:
text: 'First_Tab'
Tabs:
TabbedPanelItem:
text: 'Second_Tab'
Tabs:
TabbedPanelItem:
text: 'Third_Tab'
Tabs:
<Tabs>:
grid: grid
ScrollView:
scroll_timeout: 250
scroll_distance: 20
do_scroll_y: True
do_scroll_x: False
GridLayout:
id: grid
cols: 1
spacing: 10
padding: 10
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
Label:
text:'scroll'
color: (0, 0, 0, 1.0)
这是我的 .py 代码:
__author__ = 'drakenden'
__version__ = '0.1'
import kivy
kivy.require('1.9.0') # replace with your current kivy version !
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.properties import StringProperty, ObjectProperty,NumericProperty
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.utils import platform
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.scrollview import ScrollView
class Tabs(ScrollView):
def __init__(self, **kwargs):
super(Tabs, self).__init__(**kwargs)
class Tabba(TabbedPanel):
pass
class SecondScreen(Screen):
pass
class ScreenManagement(ScreenManager):
pass
presentation = Builder.load_file("layout2.kv")
class MyApp(App):
def build(self):
return presentation
MyApp().run()
Where/What我做错了吗?
(也接受 UI 改进意见和建议)
我自己已经有一段时间没有使用 kivy 但如果我记得很清楚的话: 因为 ScrollView 中的布局应该比滚动视图大 例如 ScrollView 宽度:1000px,GridView 1100px。 所以它可以滚动 100px