MDRoundFlatIconButton 在禁用后启用时会丢失背景颜色。有啥修复吗?

Posted

技术标签:

【中文标题】MDRoundFlatIconButton 在禁用后启用时会丢失背景颜色。有啥修复吗?【英文标题】:MDRoundFlatIconButton loses the background colour when it is enabled after disabling. Any fixes?MDRoundFlatIconButton 在禁用后启用时会丢失背景颜色。有什么修复吗? 【发布时间】:2022-01-16 23:20:33 【问题描述】:

在 .kv 文件中:

MDRoundFlatIconButton:
    icon: 'send-check'
    text: "Confirm"
    size_hint: .15, 1
    md_bg_color: 0, 0, 0, 1
    on_release: app.submitSliderValue()
    disabled: not app.slider_active_bool

在 .py 文件中:

class BlackjackApp(MDApp):
    
    slider_active_bool = BooleanProperty(True)

    def initalize(self):
        sleep(1)
        self.slider_active_bool = False
        sleep(1)
        self.slider_active_bool = True

程序启动时,按钮有md_bg_color。禁用后,它会以灰色显示正常运行(就像禁用时一样)。但是当它再次重新启用时,它不会得到与以前相同的黑色。帮助。

【问题讨论】:

【参考方案1】:

我相信这是kivyMD 中的一个错误。您可以通过将on_disabled() 添加到您的kv 来解决此问题:

MDRoundFlatIconButton:
    icon: 'send-check'
    text: "Confirm"
    size_hint: .15, 1
    md_bg_color: 0, 0, 0, 1
    on_release: app.submitSliderValue()
    disabled: not app.slider_active_bool
    on_disabled: app.butt_disabled(self)

然后将butt_disabled()方法添加到App

class BlackjackApp(MDApp):
    slider_active_bool = BooleanProperty(True)

    def butt_disabled(self, butt):
        if not butt.disabled:
            butt.md_bg_color = (0, 0, 0, 1)  # reset md_bg_color

【讨论】:

以上是关于MDRoundFlatIconButton 在禁用后启用时会丢失背景颜色。有啥修复吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 uitableview 中禁用反弹也会禁用 iOS 5 上的滚动,但不会禁用 iOS4

如果禁用,则在悬停路由器按钮时禁用指针事件

如何在打开的工作簿中禁用 SaveAs 但不禁用 Save

在 ExtJS 中,如何禁用悬停在禁用工具栏按钮上的样式更改?

输入在 IE 中显示为禁用,但未禁用

如何在不禁用突出显示的情况下禁用合适的触摸行