Kivy - 行為



在 Kivy 中,“kivy.uix.behaviors” 模組定義了行為混合器,也稱為“可重用類”,它們為小部件提供了額外的功能。它們封裝了常見的功能,可以與多個小部件混合使用以擴充套件其行為。

  • 行為有助於保持程式碼模組化、可重用和可維護。它們允許您為標準 Kivy 小部件定義自己的實現,這些實現可以作為直接替換。

  • 行為混合器的一個應用是使用影像作為按鈕。我們可以定義一個擴充套件 ButtonBehavior 的自定義類,使其響應“on_press”或“on_touch”等事件,以便影像本身可以像按鈕一樣工作。本章稍後我們將檢視將影像轉換為按鈕的示例。

“kivy.uix.behaviors” 模組定義了多個混合器。下面解釋了一些最常用的類:

ButtonBehavior

此行為為小部件提供了類似按鈕的功能。它添加了諸如按下/釋放視覺反饋、自動觸發“on_press”和“on_release”事件以及處理觸控事件等功能。

它經常與 Button、ToggleButton 或需要類似按鈕行為的自定義小部件一起使用。

DragBehavior

此行為類允許透過觸控輸入拖動和移動小部件。它處理諸如 on_touch_down、on_touch_move 和 on_touch_up 等觸控事件以實現拖動功能。

它可用於在您的應用程式中建立可拖動的小部件。

FocusBehavior

此行為提供了支援在小部件之間管理焦點的功能。它允許小部件接收鍵盤輸入並處理與焦點相關的事件。

它可用於實現鍵盤導航並在應用程式中管理焦點遍歷。

SelectableBehavior

此行為為小部件添加了選擇功能。它允許使用者從一組可選擇的小部件中選擇一個或多個專案。它處理選擇狀態、視覺反饋以及觸發與選擇相關的事件。

它經常與 ListView、RecycleView 或需要選擇功能的自定義小部件一起使用。

ButtonBehavior 示例

我們現在將開發一個 Kivy 程式來實現 ButtonBehavior。我們使用 Kivy 的 Image 物件在 Kivy 視窗上顯示影像。但是,要向其新增類似按鈕的行為,我們首先定義一個名為 imgbtn 的自定義類,該類擴充套件 Image 和 ButtonBehavior 類。

Image 類的 source 屬性被賦值為一個字串,該字串是影像檔案的路徑。然後我們覆蓋 on_press() 方法,如下所示:

from kivy.uix.image import Image
from kivy.uix.behaviors import ButtonBehavior

class imgbtn(ButtonBehavior, Image):
   def __init__(self, **kwargs):
      super(imgbtn, self).__init__(**kwargs)
      self.source = 'Logo.jpg'

   def on_press(self):
      print("Button pressed")

之後,定義 **imgbtn** 類。讓 App 類的 build() 方法返回其物件。

這是 **可執行程式碼**。您可以儲存並執行它:

from kivy.app import App
from kivy.uix.image import Image
from kivy.uix.behaviors import ButtonBehavior
from kivy.config import Config

# Configuration
Config.set('graphics', 'width', '720')
Config.set('graphics', 'height', '400')
Config.set('graphics', 'resizable', '1')

class imgbtn(ButtonBehavior, Image):
   def __init__(self, **kwargs):
      super(imgbtn, self).__init__(**kwargs)
      self.source = 'Logo.jpg'

   def on_press(self):
      print("Button pressed")

class ImageApp(App):
   def build(self):
      return imgbtn()

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

輸出

執行上述程式。它將在其中心顯示帶有影像的 Kivy 視窗:

Kivy Behaviors

請注意,影像本身充當按鈕。要測試,請單擊影像,它將在控制檯上列印以下訊息:

Button pressed
廣告
© . All rights reserved.