为了使ActionPrevious
的标题文本可点击(更多信息请参见this question),我试图修改^{__init__
期间通过id访问小部件。这就是我的子类的外观:
class LogoutButton(ActionPrevious):
def __init__(self, **kwargs):
super(LogoutButton, self).__init__(**kwargs)
print(self.children) # prints an empty tuple
print(self.ids) # prints an empty dictionary
lb = self.ids['title']
self.remove_widget(lb)
self.ids['prevlayout'].add_widget(lb)
因此,这些打印显示在__init__
期间没有任何子项,尽管我已经调用了ActionPrevious的__init__
。
我知道我试图实现的目标可以通过复制整个定义和调整缩进来实现,但它似乎有点太大了,我不想在我的代码中有这样的东西。我可以在不复制kv定义的情况下使用子类和Python执行同样的操作吗
如果要读取
ids
或children
表,应该等到第二个kivy循环帧。在这里,您试图在第一个循环帧中访问它们,然后再将它们放在一个小部件树中您应该做的是等待第一帧结束,然后读取值。最简单的方法是使用^{} 装饰器。例如:
相关问题 更多 >
编程相关推荐