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”屬性指定的顏色。

廣告