
- 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 框架中的 Spinner 控制元件是一種更傳統的下拉控制元件型別,不同於 Kivy 的 DropDown 控制元件。與 DropDown 相比,構造和使用 Spinner 控制元件更加簡單方便。
Kivy 的下拉選單和旋轉器控制元件之間的主要區別在於,下拉選單控制元件可以包含任何其他 Kivy 控制元件,例如 Label、Button、Image 等;而旋轉器僅僅是一個字串列表。
Spinner 類定義在 "kivy.uix.spinner" 模組中。
from kivy.uix.spinner import Spinner spin = Spinner(**kwargs)
Spinner 控制元件顯示一個對應於當前選擇值的文字標題。Spinner 物件可以使用不同的屬性作為關鍵字引數進行構造。但是,這兩個屬性非常重要:
text 屬性是一個字串,顯示預設值。
values 屬性是一個 ListProperty,包含所有可供選擇的數值。
要構造一個簡單的旋轉器,請使用以下程式碼片段:
from kivy.base import runTouchApp from kivy.uix.spinner import Spinner spinner = Spinner( text='English', values=('English', 'French', 'German', 'Chinese') )
旋轉器物件的 text 屬性可以繫結到一個回撥函式,以便在每次進行選擇時呼叫相應的操作。
def value_changed(spinner, text): print(You selected', text, 'language') spinner.bind(text=show_selected_value)
Spinner 類中的其他屬性如下所示:
dropdown_cls - 用於在按下 Spinner 時顯示下拉列表的類。它是一個 ObjectProperty,預設為 DropDown。
is_open - 預設情況下,旋轉器未開啟。設定為 True 以開啟它。
option_cls - 用於在 Spinner 下顯示的下拉列表中顯示選項的類。該類的 text 屬性將用於表示值。它的 on_release 事件用於在按下/觸控選項時觸發選項。
text_autoupdate - 這是一個 BooleanProperty。它指示是否應使用 values 屬性的第一個值自動更新旋轉器的文字。將其設定為 True 將導致旋轉器在每次更改 values 時更新其 text 屬性。
values - 使用者可以選擇的值。它必須是一個字串列表。它是一個 ListProperty,預設為 []。
下面的程式碼組裝了一個 Spinner,並關聯了一個標籤,以便在水平框中顯示選定的值。下面的水平框包含一個 TextInput 和一個 Button。目的是在該按鈕上提供一個回撥函式,該函式將文字框中的字串新增到 Spinner 值中。
該程式在 App 類中包含兩個回撥方法。一個用於顯示從旋轉器中選擇的值,另一個用於向旋轉器新增新的語言。
新增新語言的回撥函式:
def addvalue(self, instance): self.spin1.values.append(self.t1.text)
我們將把此方法繫結到“新增”按鈕。
在標籤上顯示選定的語言:
def on_spinner_select(self, spinner, text): self.spinnerSelection.text = "Selected Language is: %s" %self.spin1.text
我們將把此方法繫結到 Spinner 控制元件的“text”屬性。
示例
將下面的程式碼儲存為“spiinerdemo.py”並執行。
from kivy.app import App from kivy.uix.label import Label from kivy.uix.spinner import Spinner from kivy.uix.boxlayout import BoxLayout from kivy.uix.textinput import TextInput from kivy.uix.button import Button from kivy.core.window import Window Window.size = (720, 400) class SpinnerExample(App): def addvalue(self, instance): self.spin1.values.append(self.t1.text) def build(self): layout = BoxLayout(orientation='vertical') lo1 = BoxLayout(orientation='horizontal') self.spin1 = Spinner( text="Python", values=("Python", "Java", "C++", "C", "C#", "PHP"), background_color=(0.784, 0.443, 0.216, 1), size_hint=(.5, .4), pos_hint={'top': 1} ) lo1.add_widget(self.spin1) self.spinnerSelection = Label( text="Selected value in spinner is: %s" % self.spin1.text, pos_hint={'top': 1, 'x': .4} ) lo1.add_widget(self.spinnerSelection) layout.add_widget(lo1) lo2 = BoxLayout(orientation='horizontal') lo2.add_widget(Label(text="Add Language")) self.t1 = TextInput() self.b1 = Button(text='add') lo2.add_widget(self.t1) lo2.add_widget(self.b1) layout.add_widget(lo2) self.spin1.bind(text=self.on_spinner_select) self.b1.bind(on_press=self.addvalue) return layout def on_spinner_select(self, spinner, text): self.spinnerSelection.text = "Selected value in spinner is: %s" % self.spin1.text print('The spinner', spinner, 'have text', text) if __name__ == '__main__': SpinnerExample().run()
輸出
左上角的按鈕是 Spinner。單擊時,語言列表會下拉。您可以進行選擇。所選名稱將顯示在其右側的標籤上。

要向列表中新增新的語言,請在文字框中輸入,然後單擊“新增”按鈕。旋轉器控制元件將在底部追加新的語言名稱。如果列表足夠長,您可以使用滑鼠向下滾動。