[英]Kivy: set widget disabled property in python code
我在 kivy lang 文件中有这样的东西(伪代码)
<RootWidget>:
Checkbox:
id: chkbox
TextInput:
id: in_text
text: ""
Button:
id: ok_btn
label: "Okay"
on_press: app.ok_pressed()
disabled: chkbox.active or len(in_text.text) > 8 and ...
关键是,ok_btn 需要根据其他几个小部件的 state 动态启用和禁用。
这一切都按预期工作,但现在我遇到了问题。 由于复杂的原因,我需要创建按钮并将其插入到 python 的根小部件中,而不是在 .kv 文件或字符串中定义它。 我不知道如何处理 disabled 属性。 如果我将其设置为属性
btn = Button()
btn.disabled = ...
这仅设置初始 state。 我想也许
btn.bind(on_disabled=some_function)
但这只是在禁用按钮时执行某些操作,而不是定义何时应该禁用它。 同上 on_state。 我也试过
btn.bind(disabled=some_function)
some_function 永远不会被调用
提前感谢任何指针
听起来您倒退了:您想要绑定的不是按钮的禁用属性,而是您想要绑定到其他东西,以便当它们更改按钮的禁用属性时得到更新。
例如,从您的原始示例中,自动生成的代码chkbox.bind(active=lambda self: setattr(ok_btn, "disabled", self.active)
(实际上不是此代码,而是等效的代码)。您需要手动复制这个。
当然,您可以通过各种方式对其进行抽象。 例如,您可以绑定您关心的所有条件来更新您的应用程序disabled: app.that_property
的属性(这样无论您的按钮是否存在,它总是存在更新),然后在您的按钮。 不过,这不是唯一的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.