pysimplegui之元素簡單介紹(元素值得獲取修改,key的規范及特殊用法)


重點

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查找沒有做任何花哨的事情。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM