Kivy - 禁用按钮
Kivy API 有不同类型的按钮小部件。Button、ToggleButton、CheckBox 对象都是具有不同特征的按钮。它们都有一个共同的属性。它们可以接受并传播点击事件上的"触摸"事件。所有按钮对象都可以引发按钮事件,因为这些类继承了 ButtonBehavior 接口。
您可以通过将"disabled"属性设置为 True 来使按钮对按钮事件不响应。 (disabled 属性的默认值为 False。disabled 属性从 Widget 类继承而来。)
from kivy.uix.button import Button b1 = Button(text="OK", disabled=True)
为了配置禁用按钮与正常或启用按钮的外观,可以使用以下属性 −
background_disabled_down − 按钮的背景图像是一个 StringProperty,即包含图像文件路径的字符串,用于按钮被禁用并按下时的默认图形表示。
background_disabled_normal −按钮的背景图像也是一个图像路径,用于按钮被禁用且未按下时的默认图形表示。
disabled_color − 此属性继承自 Label 类。它定义按钮被禁用时文本或标题的颜色。它是一个 ColorProperty,默认为 [1,1,1,3]
disabled_outline_color − 此属性定义小部件被禁用时文本轮廓的颜色,格式为 (r, g, b)。它继承自 Label 类。此功能需要 SDL2 文本提供程序。disabled_outline_color 是一个 ColorProperty,默认为 [0, 0, 0]。
示例
下面给出的代码在垂直 BoxLayout 中排列一个 ToggleButton 和一个普通按钮。如果切换按钮的状态为向下或正常,则它将另一个按钮的禁用属性更改为 True 或 False。
from kivy.app import App from kivy.uix.button import Button from kivy.uix.togglebutton import ToggleButton from kivy.core.window import Window from kivy.uix.boxlayout import BoxLayout Window.size = (720, 350) class HelloApp(App): def on_button_press(self, instance, value): if value == 'down': self.btn2.disabled = True self.btn2.text = 'Disabled' instance.text = 'Enable Btn 2' if value == 'normal': self.btn2.disabled = False self.btn2.text = 'Enabled' instance.text = 'Disable Btn 2' def build(self): flo = BoxLayout(orientation='vertical') btn1 = ToggleButton( text='Disable Btn 2', font_size=40, size_hint=(1, .25), pos_hint={'center_x': .5, 'center_y': .8} ) btn1.bind(state=self.on_button_press) self.btn2 = Button( text='Enabled', color=[0, 0, 1, 1], disabled_color=[1, 0, 0, 1], font_size=40, size_hint=(1, .25), pos_hint={'center_x': .5, 'center_y': .2} ) flo.add_widget(btn1) flo.add_widget(self.btn2) return flo if __name__ == '__main__': HelloApp().run()
输出
程序运行时,底部的按钮(即 btn2)显示为已启用,其标题位于 Color 属性中。
当顶部的按钮(btn1)被按下时,下面的按钮变为禁用状态,并更改"disabled_color"属性指定的颜色。