我确实很容易,但我正在学习Python& kivy(作为业余爱好者不是专业人士)。
我已经创造了我的第一个复杂的' kivy布局,我现在正在尝试添加python代码,而我从根本上误解了一些事情。我尽可能将它们整理成单独的文件。
1。在GridLayout中,我有一个ScrollView。我想要的是能够添加' x' ScrollView在其python类中的按钮数量。
所有相关文件(' ......'表示我已修剪到相关部分)
seatingmanager.py:
...
Builder.load_file('timescroll.kv')
...
class SeatingManager(AnchorLayout):
pass
class SeatingManagerApp(App):
def build(self):
return SeatingManager()
seatingmanager.kv:
<SeatingManager>
...
AnchorLayout:
...
GridLayout:
...
TimeScroll:
size_hint: None None
height: 50
width: 500
2。这是创建TimeScroll类的实例?这是向此实例添加特定属性的位置?
timescroll.kv:
#:import timescroll timescroll
<TimeScroll>
第3。这是我可以向所有TimeScroll实例添加属性的地方?如果我不添加任何此文件是必要的(除了导入timescroll.py)?
timescroll.py:(我认为我的问题在哪里)
from kivy.uix.togglebutton import ToggleButton
from kivy.uix.scrollview import ScrollView
from kivy.uix.boxlayout import BoxLayout
class TimeScroll(ScrollView):
def build(self):
layout = BoxLayout(orientation='vertical', size_hint_x=None,width=1500)
for i in range(10):
btn = ToggleButton(text=str(i), group='timeHeaders')
layout.add_widget(btn)
self.add_widget(layout)
return layout
4。是否在创建此类的实例时自动调用构建方法?如果没有,为什么在第一个文件中自动调用?
5。这段代码不起作用,只是将ScrollView留空,所以我假设我将BoxLayout错误地添加到ScrollView或者没有自动调用构建方法。
答案 0 :(得分:1)
- 创建此类的实例时是否自动调用构建方法?如果没有,为什么在第一个文件中自动调用它?
醇>
除非您自己这样做,否则永远不会为小部件调用构建方法。您应该按照正常的python惯例使用__init__
方法(不要忘记拨打super
)。
App类有一个构建方法,可以调用它来启动用户自己的代码,但App不是一个小部件,这是kivy唯一可以自动运行构建方法的地方。