【问题标题】:Kivy: setting the color of text on a disabled button in kvKivy:在kv中设置禁用按钮上的文本颜色
【发布时间】:2020-06-21 13:18:57
【问题描述】:

我正在尝试将禁用按钮上的文本颜色与按钮文本的正常颜色分开。由于按钮基于标签,我尝试更改 disabled_color 但没有成功。 正如您在图像中看到的,禁用按钮(左)的字体颜色仍然与正常按钮右相同。 Disabled (left) and normal (right) botton 请帮我正确设置文本颜色。 我正在使用 python 3.7.3 和 kivy 1.10.1

Button:
    #Set font
    font_size: '35sp'
    color: 1,1,1,1
    disabled_color: 25.0/255.0,25.0/255.0,25.0/255.0,1
    #Set background
    background_normal: 'button_normal.png'
    background_down: 'button_down.png'
    background_disabled_normal: 'button_normal_disn.png'
    background_disabled_down: 'button_normal_disd.png'

【问题讨论】:

    标签: button text colors kivy


    【解决方案1】:

    这很奇怪:disabled_color 对我来说很好用。您确定图像中的第一个按钮已禁用吗?这就是我的测试代码 - 也许它会有所帮助。

    #!/usr/bin/python3.5
    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    from kivy.lang.builder import Builder
    from kivy.properties import ObjectProperty, StringProperty
    from kivy.atlas import Atlas
    
    kv= Builder.load_string('''
    <MainScreen>
        first_but:first_but
        orientation:"vertical"
        Button:
            id: first_but
            font_size: '35sp'
            color: 1,0,1,1
            disabled_color: 100.0/255.0,100.0/255.0,25.0/255.0,1
            text: root.enabled
            on_release: print("working")
        Button:
            font_size: '35sp'
            color: 1,0,1,1
            text: "toggle enablement of upper button"
            on_release: root.toggle_enable()
    
    ''')
    class MainScreen(BoxLayout):
        first_but = ObjectProperty(None)
        enabled = StringProperty("enabled")
    
        def __init__(self, **kwargs):
            super(MainScreen, self).__init__(**kwargs)
    
        def toggle_enable(self):
            if self.enabled == "enabled":
                self.enabled = "disabled"
                self.first_but.disabled = True
            else:
                self.enabled = "enabled"
                self.first_but.disabled = False
    
    class myApp(App):
        def build(self):
            return MainScreen()
    
    if __name__ == "__main__":
        myApp().run()
    

    【讨论】:

    • 感谢您的代码。它帮助我找到了问题所在。我的安装有问题。我从 kivy 重新安装了所有内容,现在得到了预期的结果。
    猜你喜欢
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 2016-10-02
    • 2015-12-07
    • 2018-04-09
    • 2015-05-11
    • 2013-12-24
    • 2011-11-23
    相关资源
    最近更新 更多