带小孩小部件的自定义小部件kivy

时间:2016-05-09 06:49:00

标签: python kivy

有没有办法在自定义小部件中执行self.add_widget()?我有一个非常大的python文件,我想分开。在这样做,我有我的主窗口有几个不同的小部件,移动到一个单独的类。最初我使用循环和add_widget()使用.kv文件中的id填充此小部件。我把它移出去了,它应该返回一个放入.kv文件的GridLayout。

编辑: 我在解释中犯了一个小错误,它不是像class custom(Widget):这样的自定义窗口小部件,而是自定义GridLayout class custom(GridLayout):

在一个函数中我有self.add_widget(Button())。运行时我收到错误:AttributeError: 'custom' object has no attribute '_trigger_layout'

1 个答案:

答案 0 :(得分:0)

你想什么时候添加,你想要添加的是实际问题......

如果您有一个自定义窗口小部件(继承自Widget或其他一些窗口小部件),您可以在init或函数中调用self.add_widget(arg)。让自己成为传递窗口小部件的关键字,您可以像Custom(what=Button())一样使用它来抓住what,如下所示:

class Custom(Widget):
    def __init__(self, **kw):
        super(Custom, self).__init__(**kw)
        self.add_widget(kw['what'])

要在功能中使用它,请将what保存在类变量(self.<var>)中,稍后在self.add_widget(self.<var>)

中使用它