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 Element

ListBox 類的 get() 方法返回所選專案的列表。預設情況下,只能選擇一個專案。“刪除”按鈕獲取所選專案的值並將其從集合中刪除。

pysimplegui_element_class.htm
廣告

© . All rights reserved.