
- Kivy 教程
- Kivy - 首頁
- Kivy 基礎
- Kivy - 入門
- Kivy - 安裝
- Kivy - 架構
- Kivy - 檔案語法
- Kivy - 應用程式
- Kivy - Hello World
- Kivy - 應用程式生命週期
- Kivy - 事件
- Kivy - 屬性
- Kivy - 輸入
- Kivy - 行為
- Kivy 按鈕
- Kivy - 按鈕
- Kivy - 按鈕事件
- Kivy - 按鈕顏色
- Kivy - 按鈕大小
- Kivy - 按鈕位置
- Kivy - 圓形按鈕
- Kivy - 停用按鈕
- Kivy - 圖片按鈕
- Kivy 小部件
- Kivy - 小部件
- Kivy - 標籤
- Kivy - 文字輸入
- Kivy - 畫布
- Kivy - 線
- Kivy - 複選框
- Kivy - 下拉列表
- Kivy - 視窗
- Kivy - 滾動檢視
- Kivy - 走馬燈
- Kivy - 滑塊
- Kivy - 圖片
- Kivy - 彈出視窗
- Kivy - 開關
- Kivy - 旋轉器
- Kivy - 分隔器
- Kivy - 進度條
- Kivy - 氣泡
- Kivy - 標籤頁面板
- Kivy - 散點圖
- Kivy - 手風琴
- Kivy - 檔案選擇器
- Kivy - 顏色拾取器
- Kivy - 程式碼輸入
- Kivy - 模態檢視
- Kivy - 切換按鈕
- Kivy - 相機
- Kivy - 樹形檢視
- Kivy - reStructuredText
- Kivy - 操作欄
- Kivy - 播放器
- Kivy - 模板檢視
- Kivy - 虛擬鍵盤
- Kivy - 觸控漣漪
- Kivy - 音訊
- Kivy - 影片
- Kivy - 拼寫檢查
- Kivy - 效果
- Kivy - 輸入記錄器
- Kivy - OpenGL
- Kivy - 文字
- Kivy - 文字標記
- Kivy - 設定
- Kivy 佈局
- Kivy - 佈局
- Kivy - 浮動佈局
- Kivy - 網格佈局
- Kivy - 箱式佈局
- Kivy - 堆疊佈局
- Kivy - 錨點佈局
- Kivy - 相對佈局
- Kivy - 頁面佈局
- Kivy - 回收佈局
- Kivy - 佈局巢狀
- Kivy 高階概念
- Kivy - 配置物件
- Kivy - 圖集
- Kivy - 資料載入器
- Kivy - 快取管理器
- Kivy - 控制檯
- Kivy - 動畫
- Kivy - 多筆畫
- Kivy - 時鐘
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪貼簿
- Kivy - 工廠
- Kivy - 手勢
- Kivy - 語言
- Kivy - 圖形
- Kivy - 繪製
- Kivy - 打包
- Kivy - 花園
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用程式和專案
- Kivy - 繪圖應用程式
- Kivy - 計算器應用程式
- Kivy - 計時器應用程式
- Kivy - 相機處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 小部件動畫
- Kivy - 其他
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 工廠
Kivy 中的工廠類用於自動註冊任何類或模組,並在專案中的任何位置例項化這些類。Factory 類定義在“kivy.factory”模組中。
工廠模式是面向物件程式設計中的一種軟體架構模式。工廠是一個用於建立其他物件的程式。它是一個函式或方法,它從某個方法呼叫返回物件或類,返回“新”物件的任何方法都可以稱為“工廠”,例如工廠方法或工廠函式。
“kivy.factory.Factory”類建立類的例項並將它們新增到視窗小部件樹中。視窗小部件樹控制使用者介面上的元素。
以下是用 Factory 註冊自定義按鈕類的一個示例。
from kivy.factory import Factory from kivy.uix.button import Button Factory.register('MyCustomButton', cls=Button) btn = MyCustomButton( text: "Click me")
類似地,您可以使用 Factory 建立一個類 -
from kivy.factory import Factory from kivy.uix.label import Label class MyLabel(Label): pass Factory.register('MyLabel', cls=MyLabel) lbl = MyLabel(text: "Hello world")
預設情況下,您透過工廠註冊的第一個類名是永久的。如果您希望更改註冊的類,則需要在重新分配它之前取消註冊類名。
from kivy.factory import Factory Factory.register('NewWidget', cls=NewWidget) widget = Factory.NewWidget() Factory.unregister('NewWidget') Factory.register('NewWidget', cls=CustomWidget) customWidget = Factory.NewWidget()
示例
以下 Kivy 應用程式使用 Factory 註冊 MyPopup 類,它是 Kivy 庫中的 Popup 視窗小部件。
Kivy App 類程式碼如下 -
from kivy.app import App from kivy.uix.widget import Widget from kivy.lang import Builder from kivy.core.window import Window Window.size = (720,400) Builder.load_file('popup.kv') class MyLayout(Widget): pass class FactorydemoApp(App): def build(self): return MyLayout() FactorydemoApp().run()
為了填充應用程式視窗,使用以下“kv”指令碼 (popup.kv)
#:import Factory kivy.factory.Factory <MyPopup@Popup> auto_dismiss: False size_hint: 0.6, 0.4 pos_hint: {"x":0.2, "top": 0.9} title: "Popup Box" BoxLayout: orientation: "vertical" size: root.width, root.height Label: text: "Hello Kivy" font_size: 24 Button: text: "Close" font_size: 24 on_release: root.dismiss() <MyLayout> BoxLayout: orientation: "vertical" size: root.width, root.height Label: text: "Factory Example" font_size: 32 Button: text: "Click here" font_size: 32 on_release: Factory.MyPopup().open()
如您所見,MyPopup 類在 Factory 中註冊,並且當單擊按鈕時會呼叫其 open() 方法。
輸出
執行程式以顯示帶有“點選此處”按鈕的視窗。單擊它後,彈出視窗將出現在應用程式視窗上。

廣告