PySimpleGUI - 按鈕元素



幾乎每個 GUI 視窗至少都包含一個按鈕。當點選按鈕元素時,會啟動某個操作。PySimpleGUI 有一些具有預定義標題的按鈕型別。它們被定義為執行特定任務。其他具有使用者定義標題的按鈕能夠執行任何所需的

具有預定義標題的按鈕具有快捷名稱。因此,可以使用兩種方式建立標題為 OK 的按鈕:

>>> b1=psg.Button("OK")
# OR
>>> b1=psg.OK()

其他此類預定義標題為:

  • OK

  • Ok

  • 提交

  • 取消

  • 退出

  • 退出

  • 幫助

  • 儲存

  • 另存為

  • 開啟

在 PySimpleGUI 中,按鈕事件預設情況下自動啟用。當單擊時,這些預定義標題將成為生成的事件的名稱。

PysimpleGUI 中有一些選擇器按鈕。單擊這些按鈕時,會開啟一個對話方塊,允許使用者從中進行選擇。

  • 檔案瀏覽

  • 檔案瀏覽

  • 檔案另存為

  • 資料夾瀏覽

  • 日曆按鈕

  • 顏色選擇器按鈕

這些特殊按鈕返回所選物件的字串表示形式,並將該值填充到視窗上的任何其他元素(例如 Input 或 Multiline)中。此元素由 target 屬性指向。

target 屬性的值使用 (行,列) 元組表示。預設目標是同一行中此按鈕左側的元素,表示為 (ThisRow, -1) 值。ThisRow 表示同一行,“-1”表示按鈕左側的元素。如果 target 的值為 (None, None),則按鈕本身將儲存資訊。該值可以透過使用按鈕的鍵來訪問。

target 屬性也可以是目標元素的 key 屬性。

檔案瀏覽

FileBrowse 按鈕開啟一個檔案對話方塊,從中可以選擇單個檔案。在以下程式碼中,所選檔案的路徑字串顯示在同一行中的目標 Input 框中。

import PySimpleGUI as psg
layout = [
   [psg.Text('Select a file',font=('Arial Bold', 20), expand_x=True, justification='center')],
   [psg.Input(enable_events=True, key='-IN-',font=('Arial Bold', 12),expand_x=True), psg.FileBrowse()]
]
window = psg.Window('FileChooser Demo', layout,
size=(715,100))
while True:
   event, values = window.read()
   if event == psg.WIN_CLOSED or event == 'Exit':
      break
window.close()

此程式碼呈現以下視窗:

File Browse

單擊“瀏覽”按鈕以顯示**檔案對話方塊**:

File Dialog

所選檔名及其路徑顯示在 Input 框中。

File Browse

檔案瀏覽

此元素允許使用者選擇多個檔案。返回的字串是檔案的串聯,以“;”字元分隔。我們將使用以下程式碼填充列表框中的所選檔案。

import PySimpleGUI as psg
layout = [[psg.Text('Select a file', font=('Arial Bold', 20), expand_x=True, justification='center')],
   [psg.LBox([], size=(20, 10), expand_x=True,
   expand_y=True, key='-LIST-'),
   psg.Input(visible=False, enable_events=True, key='-IN-', font=('Arial Bold', 10), expand_x=True), psg.FilesBrowse()]
 ]
window = psg.Window('FileChooser Demo', layout, size=(715, 200))
while True:
   event, values = window.read()
   if event == '-IN-':
      window['-LIST-'].Update(values['-IN-'].split(';'))
   if event == psg.WIN_CLOSED or event == 'Exit':
      break
window.close()

這裡,鍵為“-IN-”的 Input 元素透過將“visible”屬性設定為 False 而隱藏。儘管如此,它仍然包含以“;”分隔的所選檔案列表。該字串在“;”字元出現的地方被拆分,下面的列表包含檔名。

Files Browse

資料夾瀏覽

此元素的工作原理類似於**FileBrowse** 元素。它用於選擇當前資料夾。它可用於將所選資料夾設定為後續檔案相關操作的預設資料夾。

您可以將此元素的“initial_folder”屬性設定為資料夾名稱(及其路徑),以開啟帶有該資料夾的資料夾對話方塊,並從該資料夾開始。

import PySimpleGUI as psg
layout = [
   [psg.Text('Select a folder', font=('Arial Bold', 20),
   expand_x=True, justification='center')],
   [psg.Input(enable_events=True, key='-IN-',
   font=('Arial Bold', 12), expand_x=True),
   psg.FolderBrowse(initial_folder="c:/Python310")]
]
window = psg.Window('FolderChooser Demo', layout, size=(715,100))
while True:
   event, values = window.read()
   if event == psg.WIN_CLOSED or event == 'Exit':
      break
window.close()

顯示帶有“瀏覽”按鈕的視窗。

Folder File

單擊時會開啟**資料夾對話方塊**。

Folder Dialog

所選資料夾的路徑顯示在 Input 文字欄位中。

Folder Display

檔案另存為

此按鈕也開啟一個檔案對話方塊,但提供了一個“儲存”按鈕,以便可以透過使用者給定的名稱儲存 PySimpleGUI 視窗上的資訊。SaveAs 對話方塊可以透過以下屬性自定義。我們可以對要選擇的

序號 屬性和描述
1 file_types

預設值 = (("所有檔案", "*.* *"),)

2 default_extension

如果使用者未輸入副檔名,則將其新增到檔名

3 initial_folder

資料夾和檔案的起始路徑

在下面的示例中,FileBrowse 按鈕允許您讀取檔案的內容並在 Multiline 文字框中顯示。單擊“另存為”按鈕以將顯示的文字另存為新的檔名。

import PySimpleGUI as psg
t1 = psg.Input(visible=False, enable_events=True, key='-T1-', font=('Arial Bold', 10), expand_x=True)
t2 = psg.Input(visible=False, enable_events=True, key='-T2-', font=('Arial Bold', 10), expand_x=True)
t3 = psg.Multiline("", enable_events=True, key='-INPUT-',
 expand_x=True, expand_y=True, justification='left')
layout = [[t1, psg.FilesBrowse()], [t3], [t2, psg.FileSaveAs()]]
window = psg.Window('FileSaveAs Demo', layout, size=(715, 200))
while True:
   event, values = window.read()
   if event == '-T1-':
      file = open(t1.get())
      txt = file.read()
      window['-INPUT-'].Update(value=txt)
   if event == '-T2-':
      file = open(t2.get(), "w")
      file.write(t3.get())
      file.close()
   if event == psg.WIN_CLOSED or event == 'Exit':
      break
window.close()

選擇一個文字檔案。其內容將顯示在文字框中。

File Save Demo

選擇名稱和目標資料夾以將文字儲存到新檔案中。

File SaveAs Demo

顏色選擇器按鈕

此按鈕會彈出一個顏色對話方塊。您可以從色板中選擇顏色,或使用滑塊,或從微調器中設定 RGB 值。對話方塊返回所選顏色的 RGB 值的十六進位制字串。它顯示在目標輸入控制元件中,並且可以進一步

在以下示例中,所選顏色用於更新顯示“Hello World”字串的 Text 元素的“text_color”屬性。

import PySimpleGUI as psg
layout = [[psg.Text('Hello World', font=('Arial Bold', 20),
   expand_x=True, justification='center',
   key='-T1-')],
   [psg.Input(enable_events=True, key='-IN-',
   font=('Arial Bold', 12), expand_x=True),
   psg.ColorChooserButton("Choose Color")]
 ]
window = psg.Window('Color Chooser Demo', layout, size=(715, 100))
while True:
   event, values = window.read()
   print(event, values)
   if event == '-IN-':
      window['-T1-'].update(text_color=values['-IN-'])
   if event == psg.WIN_CLOSED or event == 'Exit':
      break
window.close()

出現一個帶有“選擇顏色”標題的 ColorChooserButton 視窗。

File Color Demo

單擊按鈕以開啟顏色對話方塊。

Color Chooser Demo

選擇所需的顏色並按“確定”。將返回與之對應的十六進位制字串,並在目標 Input 元素中顯示。Input 元素的**get()**方法用於獲取它並更新“Hello World”文字的**text_color**屬性。

Color Display Demo

日曆按鈕

此按鈕顯示一個日曆選擇器視窗。目標元素填充返回值作為字串。CalendarButton 類中定義了以下重要屬性:

序號 屬性和描述
1 button_text

按鈕中的文字

2 default_date_m_d_y

顯示的開始日期

3 locale

定義用於獲取星期幾名稱的區域設定

4 month_names

要使用的月份名稱的可選列表(應為 12 個專案)

5 day_abbreviations

顯示為星期的縮寫列表(可選)

6 title

日期選擇器視窗中顯示的標題

這是一個演示如何使用 CalendarButton 的簡單示例:

Choose Date

它最初顯示一個日曆按鈕。單擊它以開啟日曆對話方塊:

Calendar Dialog

使用選擇器箭頭選擇所需的日期。它將顯示在視窗中。

Calendar Display

影像按鈕

可以使用影像代替文字標題顯示在按鈕的表面上。button 類具有“image_filename”屬性。分配要顯示的影像的名稱。影像應為 PNG 或 GIF 型別。

Button 物件的“image_filename”屬性可以設定為要在按鈕上顯示的影像檔案。

在以下示例中,新增、減去和退出按鈕使用影像而不是標題。要捕獲它們的單擊事件,將使用它們的 key 引數。

import PySimpleGUI as psg
layout = [
   [psg.Text('Enter a num: '), psg.Input(key='-FIRST-')],
   [psg.Text('Enter a num: '), psg.Input(key='-SECOND-')],
   [psg.Text('Result : '), psg.Text(key='-OUT-')],
   [psg.Button(key="Add", image_filename="plus.png"),
   psg.Button(key="Sub", image_filename="minus.png"),
   psg.Button(key="Exit", image_filename="close.png")],
]
window = psg.Window('Calculator', layout, size=(715, 200), enable_close_attempted_event=True)
while True:
   event, values = window.read()
   print(event, values)
   if event == "Add":
      result = int(values['-FIRST-']) + int(values['-SECOND-'])
   if event == "Sub":
      result = int(values['-FIRST-']) - int(values['-SECOND-'])
   window['-OUT-'].update(result)
   if event == psg.WIN_CLOSED or event == 'Exit':
      break
window.close()

以下是上述程式碼的**結果**:

Image Button
pysimplegui_element_class.htm
廣告

© . All rights reserved.