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 和一个普通按钮。如果切换按钮的状态为按下或正常,则它会将另一个按钮的 disabled 属性更改为 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 属性指定的颜色。

Kivy Disabled Buttons

当顶部的按钮 (btn1) 被按下时,下面的按钮将被禁用,并更改由“disabled_color”属性指定的颜色。

广告