- PySimpleGUI 教程
- PySimpleGUI - 首頁
- PySimpleGUI - 簡介
- PySimpleGUI - 環境設定
- PySimpleGUI - Hello World
- PySimpleGUI - 彈出視窗
- PySimpleGUI - 視窗類
- PySimpleGUI - 元素類
- PySimpleGUI - 事件
- PySimpleGUI - 選單欄
- PySimpleGUI - Matplotlib 整合
- PySimpleGUI - 使用 PIL
- PySimpleGUI - 偵錯程式
- PySimpleGUI - 設定
- PySimpleGUI 有用資源
- PySimpleGUI - 快速指南
- PySimpleGUI - 有用資源
- PySimpleGUI - 討論
PySimpleGUI - 列表框元素
在 PySimpleGUI 工具包中,此 GUI 元素是一個容器,可以顯示一個或多個專案,並從中進行選擇。您可以指定一次可見的專案數量。如果專案數量或長度超過列表框的尺寸,則在元素的右側或底部會出現垂直和/或水平捲軸。
ListBox 類的重要屬性如下:
| 序號 | 屬性及描述 |
|---|---|
| 1 | 值 要顯示的值列表。可以是任何型別,包括混合型別 |
| 2 | default_values 最初應選擇哪些值 |
| 3 | select_mode 選擇模式用於確定是否只能選擇 1 個專案或多個專案,以及如何選擇它們。 |
| 4 | no_scrollbar 控制是否應顯示捲軸。如果為 True,則不顯示捲軸 |
| 5 | horizontal_scroll 控制是否應顯示水平捲軸。如果為 True,則除了垂直捲軸外,還會顯示水平捲軸 |
“select_mode”屬性可以具有以下列舉值之一:
LISTBOX_SELECT_MODE_SINGLE(預設)
LISTBOX_SELECT_MODE_MULTIPLE
LISTBOX_SELECT_MODE_BROWSE
LISTBOX_SELECT_MODE_EXTENDED
ListBox 類繼承了 Element 類的 update() 方法。當視窗更新時,它會影響某些屬性的變化。update() 方法的引數為:
| 序號 | 屬性及描述 |
|---|---|
| 1 | 值 要顯示給使用者的新選項列表 |
| 2 | 停用 元素的停用或啟用狀態 |
| 3 | set_to_index 突出顯示指示的專案(或專案)。如果parm是整數,則將設定一個條目。如果是列表,則突出顯示列表中的每個條目 |
| 4 | scroll_to_index 滾動列表框,使該索引成為第一個顯示的索引 |
| 5 | select_mode 更改選擇模式 |
| 6 | 可見 控制元素的可見性 |
ListBox 元素在以下程式中處於活動狀態。PySimpleGUI 視窗顯示一個輸入元素、一個列表框和帶有“新增”、“刪除”和“退出”標題的按鈕。
import PySimpleGUI as psg
names = []
lst = psg.Listbox(names, size=(20, 4), font=('Arial Bold', 14), expand_y=True, enable_events=True, key='-LIST-')
layout = [[psg.Input(size=(20, 1), font=('Arial Bold', 14), expand_x=True, key='-INPUT-'),
psg.Button('Add'),
psg.Button('Remove'),
psg.Button('Exit')],
[lst],
[psg.Text("", key='-MSG-', font=('Arial Bold', 14), justification='center')]
]
window = psg.Window('Listbox Example', layout, size=(600, 200))
while True:
event, values = window.read()
print(event, values)
if event in (psg.WIN_CLOSED, 'Exit'):
break
if event == 'Add':
names.append(values['-INPUT-'])
window['-LIST-'].update(names)
msg = "A new item added : {}".format(values['-INPUT-'])
window['-MSG-'].update(msg)
if event == 'Remove':
val = lst.get()[0]
names.remove(val)
window['-LIST-'].update(names)
msg = "A new item removed : {}".format(val)
window['-MSG-'].update(msg)
window.close()
執行上述程式碼,在輸入框中輸入一些文字,然後按“新增”按鈕。文字將新增到其下方的列表框中。
ListBox 類的 get() 方法返回所選專案的列表。預設情況下,只能選擇一個專案。“刪除”按鈕獲取所選專案的值並將其從集合中刪除。