看一下我认为具有同等效果的以下代码:
main.py
对于这两个版本都是一样的,而且很无聊:
from kivy.app import App
from kivy.uix.widget import Widget
class MainWidget(Widget):
def callback(self):
pass
class MainApp(App):
pass
if __name__ == "__main__":
MainApp().run()⏎
main.kv
的工作版如下:
MainWidget:
Button:
text: "Buttontext"
on_press: root.callback()
Button:
text: "Buttontext"
on_press: root.callback()
我想为许多按钮重复一遍!这就是为什么我认为解决方案看起来像这样:
<TB@Button>:
text: "Buttontext"
on_press: root.callback()
MainWidget:
TB:
TB:
哪个不起作用。我将示例调整为如下:
<TB@Button>:
text: "Buttontext"
on_press: main.callback()
MainWidget:
id: main
TB:
TB:
......但这也不起作用。 template
- 功能是否与我的应用程序兼容?
答案 0 :(得分:2)
您的问题是root
关键字的解析。在你的dyanmic类定义中,root
指的是类本身,而不是它最终拥有的任何父类。
由于您(可能)确定按钮将始终通过添加到MainWidget来使用,因此您可以使用self.parent
代替root
。