【问题标题】:How to access parent widget elements in Kivy?如何访问 Kivy 中的父小部件元素?
【发布时间】:2020-08-25 18:21:56
【问题描述】:

我正在开发一个 Kivy 应用程序。我的应用程序的设计如下图所示:

我有两个独立的模块,MainLayout 和 Table。在 MainLayout 中有一个名为 'lblA' 的标签,在 Table 中有一个名为 'btnA' 的按钮。现在我想在 btnA 的点击上更改 lblA 的文本。但是我无法在 Table 中创建 MainLayout 的对象,因为 MainLayout 已经有 Table 的对象。这个问题有什么解决办法吗?我花了一周时间解决这个问题,但没有找到解决方案。任何帮助都是不言而喻的。谢谢。

【问题讨论】:

  • 你能用一些代码编辑你的问题吗?
  • 您的代码在哪里?所有小部件都应具有函数self.parent() 以访问父对象。有时在原始对象和预期父对象之间还有其他对象,它可能需要许多父对象self.parent().parent() 等。顺便说一句:不要创建对象MainLayout,因为它会创建新对象并且它不会访问已经存在的对象MainLayout.
  • 感谢@furas,我通过 self.parent() 属性解决了我的问题。非常感谢。
  • 谢谢@inclement,你的帖子很有帮助。

标签: python kivy desktop-application kivy-language


【解决方案1】:

解决方案列在评论部分,我也将其发布。 我们可以使用模块的 parent 属性来解决这个问题。

在我的例子中,要在 btnA 点击时更改 lblA 的文本,这是 btnA 点击处理程序的简单代码。 self.parent.ids.lblA.text = "I am changed from btnA(which is in Table module)"

这里,self.parent 指向 MainLayout,在该布局内,我们有一个 ID 为 lblA 的标签。

如需更多帮助:请访问此链接:http://inclem.net/2019/06/20/kivy/widget_interactions_between_python_and_kv/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多