python - 模板中的 kivy 事件处理程序

标签 python kivy

看看我认为具有相同效果的以下代码:

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:

...但这也不起作用。 模板功能与我的应用程序兼容吗?

最佳答案

您的问题是 root 的分辨率关键词。在您的动态类定义中,root指的是类本身,而不是它最终拥有的任何父类。

由于您(大概)确定这些按钮将始终通过添加到 MainWidget 来使用,因此您可以使用 self.parent而不是root .

关于python - 模板中的 kivy 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154457/

相关文章:

python - 我正在尝试将 kivy 弹出窗口中的按钮绑定(bind)到 popup.dismiss 函数并不断收到错误消息

android - Buildozer 未知命令/目标 android_old

python - 在 flask 弹性 beantalk 实例上运行 alembic 迁移

Python Regex Sub - 在替换中使用匹配作为字典键

python - 我在分析 Python 的 Dict 插入运行时间时遇到了什么错误?

python - 使用一个大的 INSERT 语句保存许多 Django 对象

python - 如何将库 pip 安装到 Azure Web App 上的 'antenv' venv?

python - Pyinstaller:因 IndexError 失败(Kivy 应用程序)

python - 屏幕截图()给出:ImportError: cannot import name glReadPixels error in kivy

python - 重定向时 Kivy screenmanager "No Screen with name"错误