【问题标题】:Modify other widgets with conditional statements KivyMD使用条件语句修改其他小部件 KivyMD
【发布时间】:2020-12-10 07:43:05
【问题描述】:

我正在尝试根据 MDCheckbox 的状态修改 MDTextField 的状态。最初,应该禁用 TextField 并且不可见。期望的结果是,当 MDCheckbox 状态为 Active 或 True 时,MDTextField 将被启用并可见,反之亦然。我只使用 KVLanguage 来完成这项任务。

到目前为止,这是我的代码,即使复选框处于活动状态,我的 MDTextField 的状态也保持不变:

 <MyContent>:    
    MDCheckbox:
        size_hint: None, None
        size: dp(50), dp(50)
        halign:'left'
        pos_hint: {"x":0, "top":0.6}
        on_state:
            if self.state == 'active': \
            root.ids.numCotiz.enabled = True ; \
            root.ids.numCotiz.opacity= 1
            #else: numCotiz.enabled = False and numCotiz.opacity= 0

    MDTextField:
        id: numCotiz
        mode: "rectangle"
        enabled: False
        opacity: 0
        multiline: 'False'
        max_text_length:10
        pos_hint: {"x":0, "top":0.6}
        hint_text: 'Agregue numero de cotizacion'
        size_hint: 0.3, 1

MDCheckbox 中代码的其他替代方案如下:

MDCheckbox:
        size_hint: None, None
        size: dp(50), dp(50)
        halign:'left'
        pos_hint: {"x":0, "top":0.6}
        on_active:
            numCotiz.enabled = True
            numCotiz.opacity= 1

使用这种替代方法,我确实让我的 TextField 出现在屏幕上,但是当 Chechbox 再次处于非活动状态时,我不知道如何再次将 opacity = 0 设置为。 我对这个问题进行了研究,但我无法得到想要的结果。

非常感谢。

【问题讨论】:

    标签: kivy conditional-statements kivy-language kivymd


    【解决方案1】:

    我想通了,我将 Kivy 代码更改为:

    MDCheckbox:
            size_hint: None, None
            size: dp(50), dp(50)
            halign:'left'
            pos_hint: {"x":0, "top":0.6}
            on_active:
                root.on_checkbox_active(*args)
    

    并在我的 Python 文件中添加了一个函数。

    class MyContent(BoxLayout):
    
        def on_checkbox_active(self, checkbox, value):
            if value:
                self.ids.numCotiz.enabled= True
                self.ids.numCotiz.opacity = 1
            else:
                self.ids.numCotiz.enabled = False
                self.ids.numCotiz.opacity = 0
    

    现在它就像一个魅力。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      相关资源
      最近更新 更多