重點
1獲取元素的值
Input(key='mykey')
values['mykey']
2通過key查找元素 對象window['key']
3更新元素的值
window['key'](要更新的值)
window['key']。update()
4
假設您有一個帶有輸入元素網格的窗口。您可以使用它們的行和列位置作為鍵(元組)
key=(row, col)
然后,當您讀取values
從調用返回給您的變量時,變量中的Window.read()
鍵values
將是您用於創建元素的任何內容。在這種情況下,您會將值讀取為: values[(row, col)]
5key的規范
大多數時候,它們是簡單的文本字符串。在演示程序中,鍵按以下約定編寫:( _KEY_NAME_
下划線開頭和結尾全部大寫字母)或最近的約定是在開頭和結尾使用破折號(例如'-KEY_NAME-'
)。您不必遵守約定,但遵守約定也不錯,因為其他用戶已經習慣了這種格式,並且在使用元素鍵時很容易發現。
正文
您將在文檔的“調用參考”選項卡中找到有關元素和所有其他類和函數的信息。
“元素”是用於創建窗口的構建塊。一些 GUI API 使用術語“Widget”來描述這些圖形元素。因此,當引用 PySimpleGUI元素與底層 GUI 框架的Widget時,就很清楚了。PySimpleGUI 元素映射到 GUI 框架小部件,通常以一對一的方式。例如,文本元素是在 tkinter 中使用標簽小部件實現的。
Tkinter 端口中的元素表
PySimpleGUI 的每個端口都有一組核心元素以及特定於端口的元素。一些特定於端口的元素包括 Qt 端口中的 Dial 元素和 tkinter 端口中的 Pane 元素。
元素名稱 | 別名 | tkinter 小部件 | 描述 |
---|---|---|---|
文本 | T,文本 | tk.標簽 | 一行或多行文本 |
輸入 | 我,在,輸入文本 | tk.Entry | 單行文本輸入 |
組合 | DD, Drop, DropDown, InputCombo | ||
選項菜單 | 輸入選項菜單 | ||
多行 | ML, 多線 | ||
輸出 | |||
收音機 | R,拉德 | ||
復選框 | CB、CBox、檢查 | ||
旋轉 | Sp | ||
按鈕 | B, Btn | ||
圖片 | 我是 | ||
帆布 | |||
柱子 | 科爾 | ||
框架 | 神父 | ||
標簽 | |||
選項卡組 | |||
窗格 | |||
圖形 | G | ||
滑塊 | SL | ||
列表框 | LB, LBox | ||
菜單 | 菜單欄,菜單欄 | ||
菜單欄自定義 | |||
按鈕菜單 | BM, B菜單 | ||
標題欄 | |||
進度條 | PBar, Prog, 進展 | ||
桌子 | |||
樹 | |||
垂直分隔符 | VSep, VSeparator | ||
水平分隔符 | HSep,HS分離器 | ||
狀態欄 | 酒吧 | ||
尺寸握把 | SGrip | ||
推 | P,拉伸 | ||
副推 | 副總裁,VStretch | ||
尺寸測量儀 |
布局輔助函數
您的窗口布局由元素列表組成。除了元素之外,這些布局幫助功能也可能出現在布局定義中
布局助手 | 描述 |
---|---|
別針 | 將元素“固定”到布局中的某個位置。如果元素從不可見過渡到可見,則 pin 確保元素位於正確的位置 |
頂部 | 將元素或元素行垂直對齊到行的頂部 |
底部 | 將元素或元素行垂直對齊到行的底部 |
中心 | 將元素或元素行垂直對齊到行的中心 |
- 文本
- 單線輸入
- 包括以下類型的按鈕:
- 文件瀏覽
- 文件夾瀏覽
- 日歷選擇器
- 日期選擇器
- 閱讀窗口
- 關閉窗口(“按鈕”和所有快捷按鈕)
- 即時的
鑰匙
在 PySimpleGUI 中,鍵是一個非常重要的概念。
如果你打算用你的 GUI 做任何超出基本東西的事情,那么你需要了解鍵。
您可以將“鍵”視為元素的“名稱”。或“標識符”。這是您使用 PySimpleGUI 庫識別和討論元素的一種方式。它與字典鍵完全相同。它們對於窗口必須是唯一的。
key
使用參數創建元素時指定鍵。
鍵的使用方式如下: * 創建元素時指定 * 作為事件返回。如果一個元素導致一個事件,它的鍵將被使用 * 在values
從返回的字典中window.read()
* 進行更新(更改),到窗口中的元素
在您將鍵放入元素的定義中后,從中返回的值window.read
將使用該鍵告訴您該值。例如,如果您的布局中有一個輸入元素:
Input(key='mykey')
你的閱讀看起來像這樣: event, values = Read()
然后要從讀取中獲取輸入值,它將是: values['mykey']
如果要對元素調用 Update,也可以使用相同的鍵。請參閱更新元素部分以了解該用法。要在給定元素鍵的情況下查找元素對象,可以調用 window 方法find_element
(也寫FindElement
為 , element
),也可以使用更常見的查找機制:
window['key']
雖然您經常會在本文檔的示例中看到以字符串形式編寫的鍵,但要知道鍵可以是ANYTHING。
假設您有一個帶有輸入元素網格的窗口。您可以使用它們的行和列位置作為鍵(元組)
key=(row, col)
然后,當您讀取values
從調用返回給您的變量時,變量中的Window.read()
鍵values
將是您用於創建元素的任何內容。在這種情況下,您會將值讀取為: values[(row, col)]
大多數時候,它們是簡單的文本字符串。在演示程序中,鍵按以下約定編寫:( _KEY_NAME_
下划線開頭和結尾全部大寫字母)或最近的約定是在開頭和結尾使用破折號(例如'-KEY_NAME-'
)。您不必遵守約定,但遵守約定也不錯,因為其他用戶已經習慣了這種格式,並且在使用元素鍵時很容易發現。
如果您有一個元素對象,要找到它的鍵,請訪問該.Key
元素的成員變量。這假設您已經在變量中獲得了元素。
text_elem = sg.Text('', key='-TEXT-') the_key = text_elem.Key
默認鍵
如果您未能在元素上放置鍵,則會自動為您創建一個鍵。
對於Buttons
,按鈕上的文本是該按鈕的鍵。Text
元素將默認為文本的字符串(當啟用事件並單擊文本時)
如果元素是輸入元素之一(將導致在返回值字典中生成條目)並且您未能指定一個,則將為其分配一個以數字 0 開頭的數字。效果將如下如果即使使用字典,值也表示為列表。
菜單鍵
菜單項也可以有與之關聯的鍵。有關這些特殊鍵的更多信息,請參閱菜單部分。它們與元素鍵不同。像所有元素一樣,菜單元素具有這些元素鍵之一。各個菜單項鍵不同。
WRITE_ONLY_KEY
修飾符
有時您有Multiline
用作輸出的輸入元素(例如 )。這些元素的內容可能會變得很長。您不需要“讀取”這些元素,這樣做可能會不必要地返回大量數據。
要告訴 PySimpleGUI 您不希望元素在Window.read
被調用時返回值,請將字符串添加WRITE_ONLY_KEY
到您的鍵名中。
如果您的Multiline
元素最初是這樣定義的:
sg.Multiline(size=(40,8), key='-MLINE-')
然后要關閉該元素的返回值,該Multiline
元素將這樣編寫:
sg.Multiline(size=(40,8), key='-MLINE-' + sg.WRITE_ONLY_KEY)
Key Errors - 關鍵錯誤恢復算法
在 PySimpleGUI 的主要 (tkinter) 端口中,從版本 4.27.0 開始(尚未在 PyPI 上......但在 GitHub 上作為 4.26.0.14+ 可用)
現在有 3 種對關鍵錯誤處理的控制和一個全新的關鍵報告時代。
SUPPRESS_ERROR_POPUPS = False SUPPRESS_RAISE_KEY_ERRORS = False SUPPRESS_KEY_GUESSING = False
您可以通過調用來修改這些值set_options
。
sg.set_options(suppress_raise_key_errors=False, suppress_error_popups=False, suppress_key_guessing=False)
它們的基本定義是: suppress_error_popups
- 禁止在 PySimpleGUI 本身中生成的錯誤彈出窗口不顯示 suppress_raise_key_errors
- 如果未找到密鑰或緊密匹配,則禁止引發密鑰錯誤 suppress_key_guessing
- 如果您有密鑰錯誤,則禁止密鑰猜測算法
保留定義的默認值(全部False
),這是關鍵錯誤的工作方式。
這是本例中使用的程序:
import PySimpleGUI as sg def main(): sg.set_options(suppress_raise_key_errors=False, suppress_error_popups=False, suppress_key_guessing=False) layout = [ [sg.Text('My Window')], [sg.Input(k='-IN-'), sg.Text(size=(12,1), key='-OUT-')], [sg.Button('Go'), sg.Button('Exit')] ] window = sg.Window('Window Title', layout, finalize=True) while True: # Event Loop event, values = window.read() print(event, values) if event == sg.WIN_CLOSED or event == 'Exit': break window['-O U T'].update(values['-IN-']) window.close() def func(): main() func()
有幾點需要注意:
- 調用了多個級別的函數,而不僅僅是一個平面程序
- 明確定義了 2 個鍵,此時兩者都是文本(我們稍后會更改它們)
- 有 2 個查找發生,一個與
window
另一個values
此鍵錯誤恢復算法僅適用於用於在窗口內查找鍵的元素鍵。鍵查找是一個普通的字典,因此該values
查找沒有做任何花哨的事情。