初学者:在布局中添加x个小部件

时间:2014-10-22 08:59:47

标签: python kivy

我确实很容易,但我正在学习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或者没有自动调用构建方法。

1 个答案:

答案 0 :(得分:1)

  
      
  1. 创建此类的实例时是否自动调用构建方法?如果没有,为什么在第一个文件中自动调用它?
  2.   

除非您自己这样做,否则永远不会为小部件调用构建方法。您应该按照正常的python惯例使用__init__方法(不要忘记拨打super)。

App类有一个构建方法,可以调用它来启动用户自己的代码,但App不是一个小部件,这是kivy唯一可以自动运行构建方法的地方。