如何更改 Kivy 中禁用的小部件的颜色?

How to change color of disabled widget in Kivy?

这只是我申请的一小部分。
我有一个按钮 "Hi".
我在 gridlayout 中还有 2 个按钮“1”和“2”,id 是 w_10
按 "Hi" 后,w_10 将被禁用。
现在,我不希望“1”和“2”在 w_10 被禁用后改变颜色,我想让它们与过去的状态相同,即绿色。请改进我的代码。

我的代码:

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button

Builder.load_string("""
<MenuScreen>:
    GridLayout:
        cols: 1
        Button:
            text: 'HI'
            on_press: root.change()
        GridLayout:
            id: w_10
            rows:1
            Button:
                text: '1'
                background_normal: ''
                background_color:(0.207, 0.635, 0.423, 0.9)
            Button:
                text:'2'
                background_normal: ''
                background_color:(0.207, 0.635, 0.423, 0.9)               
""")

# Declare both screens
class MenuScreen(Screen):
    def change(self):
        self.ids['w_10'].disabled=True

sm = ScreenManager()
menu = MenuScreen(name='menu')
sm.add_widget(menu)

class TestApp(App):
    def build(self):
        return sm

if __name__ == '__main__':
    TestApp().run()

background_disabled_normal 属性 个按钮设置为空字符串:

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button

Builder.load_string("""
<MenuScreen>:
    GridLayout:
        cols: 1
        Button:
            text: 'HI'
            on_press: root.change()
        GridLayout:
            id: w_10
            rows:1
            Button:
                background_disabled_normal: ''
                text: '1'
                background_normal: ''
                background_color:(0.207, 0.635, 0.423, 0.9)
            Button:
                background_disabled_normal: ''
                text:'2'
                background_normal: ''
                background_color:(0.207, 0.635, 0.423, 0.9)               
""")

# Declare both screens
class MenuScreen(Screen):
    def change(self):
        self.ids['w_10'].disabled = True

sm = ScreenManager()
menu = MenuScreen(name='menu')
sm.add_widget(menu)

class TestApp(App):
    def build(self):
        return sm

if __name__ == '__main__':
    TestApp().run()

如果您希望文本颜色不变,也可以使用 disabled_color 属性:

Button:
    background_disabled_normal: ''
    disabled_color: 1, 1, 1, 1
    text: '1'
    background_normal: ''
    background_color:(0.207, 0.635, 0.423, 0.9)