- 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 - Garden
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用和專案
- Kivy - 繪圖應用
- Kivy - 計算器應用
- Kivy - 計時器應用
- Kivy - 相機處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪圖
- Kivy - 元件動畫
- Kivy - 其他
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 檔案選擇器
在 GUI 應用中,您經常需要從本地檔案系統中選擇所需檔案。Kivy 框架提供“kivy.uix.filechooser”模組,其中包含用於描述、顯示和瀏覽檔案系統的各種類。
filechooser 模組中的類採用 MVC 設計。它們可以分為如下幾類:
模型由FileSystemAbstract類的具體實現表示,例如FileSystemLocal。
檢視由FileChooserListLayout和FileChooserIconLayout類表示。這些分別由FileChooserListView和FileChooserIconView元件使用。
控制器由FileChooserController的具體實現表示,即FileChooser、FileChooserIconView和FileChooserListView類。
FileChooserIconView 和 FileChooserListView 類提供非常易於使用的元件,它們以兩種不同的視覺表示方式提供對檔案系統的訪問,正如其名稱所示。
FileChooserListView 元件以垂直列表中文字項的形式顯示檔案和資料夾。資料夾左側用“>”符號標識,單擊可以展開或摺疊其檔案和子資料夾。
FileChooserIconView 元件顯示資料夾圖示及其名稱,以及檔案圖示及其名稱。
如果檔案/資料夾數量超過元件的高度和寬度,則會附加垂直和水平捲軸。
FileChooser 檢視具有以下屬性:
files - 應用過濾器後,路徑指定的目錄中的檔案列表。files 是一個只讀 ListProperty。
filter_dirs - 指示過濾器是否也應應用於目錄。filter_dirs 是一個 BooleanProperty,預設為 False。
filters - filters 指定要應用於目錄中檔案的過濾器。filters 是一個 ListProperty,預設為 []。如果為空,則等效於 '*',表示沒有檔案被過濾掉。路徑更改時,過濾器不會重置。如果需要,您需要自己重置。
您可以在列表中指定一個或多個以下模式:
| 序號 | 模式列表和描述 |
|---|---|
| 1 | * 匹配所有內容 |
| 2 | ? 匹配任何單個字元 |
| 3 | [seq] 匹配 seq 中的任何字元 |
| 4 | [!seq] 匹配 seq 中不存在的任何字元 |
這兩個檢視都會引發 on_selection 事件,可以將回調繫結到該事件。當生成此事件時,如果選擇了資料夾,它將展開或摺疊該資料夾。如果選擇了檔案,則其名稱將傳遞給回撥。
ListView 示例
在第一個示例中,我們使用 FileChhoserListView 元件和標籤在垂直框佈局中構造 App 視窗。
為此目的,請使用以下“kv”檔案指令碼。select() 方法繫結到檢視的“on_selection”事件。
<Filechooser>:
label: label
orientation: 'vertical'
BoxLayout:
FileChooserListView:
canvas.before:
Color:
rgb: .4, .5, .5
Rectangle:
pos: self.pos
size: self.size
on_selection: root.select(*args)
Label:
id: label
size_hint_y: .1
canvas.before:
Color:
rgb: .5, .5, .4
Rectangle:
pos: self.pos
size: self.size
請注意 FileChooseListView 和 Label 元件的 canvas 物件的使用,以提供背景顏色。
Kivy 應用類程式碼如下:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
Window.size = (720,400)
class Filechooser(BoxLayout):
def select(self, *args):
try: self.label.text = args[1][0]
except: pass
class FileDemoApp(App):
def build(self):
return Filechooser()
if __name__ == '__main__':
FileDemoApp().run()
輸出
執行上述程式碼後,您將獲得檔案/資料夾列表。檔案及其完整路徑的名稱將顯示在標籤上。
IconView 示例
現在我們展示 FileChooserIconView 的用法。它與 Image 元件一起放置在一個水平框中。雖然 FileChooserIconView 的大部分配置與之前的示例相同,但我們添加了 filters 屬性以將檔案的顯示限制為僅 png 檔案。
<Filechooser>:
img: img
orientation: 'horizontal'
BoxLayout:
FileChooserIconView:
filters: ['*.png']
canvas.before:
Color:
rgb: .5, .4, .5
Rectangle:
pos: self.pos
size: self.size
on_selection: root.select(*args)
Image:
id: img
source:""
由於我們打算顯示選定的影像,因此更改了 select() 方法,以便 Image 物件的 source 屬性被分配選定的檔案。
class Filechooser(BoxLayout):
def select(self, *args):
try:
self.img.source = args[1][0]
except:
print ('error')
class FileIconApp(App):
def build(self):
return Filechooser()
# run the App
if __name__ == '__main__':
FileIconApp().run()
輸出
執行程式並瀏覽到所需的影像檔案。選定的影像將顯示在右側。