PySimpleGUI 簡介

Jason990420發表於2020-04-14

PySimpleGUI 簡介

建立圖形使用者介面 (GUI)可能很困難, 有許多不同的Python GUI工具包可供選擇。最常提到的前三名是 Tkinter, wxPython 和 PyQt (或PySide2). 但是PySimpleGUI的較新工具包,其目的是使建立GUI更加容易。

PySimpleGUI 主要的作用是成為Tkinter, wxPython和PyQt之上的抽象層。您可以將其視為包裝器, 拉近設計者與GUI 的距離. 雖然建立GUI 變的很簡單, 相對的有很多細節被忽略掉, 也就是說你只能按PySimpleGUI 所提供的功能來使用.這個版本是架設在Tkinter 之上, 當然還有其他的版本, 像是PySimpleGUIQt, PySimpleGUIWx, PySimpleGUIWeb, …

所以說優點呢, 就是簡單, 缺點也是簡單, 以下大約說明一下使用方法, 其他的 GUI 很難在短短一篇文章就能說個大槪.

使用 PySmpleGUI, 基本上分成三大部份:

  • 視窗佈局
  • 啟動視窗
  • 事件處理
  1. 視窗佈局

    • layout = [ [第一行所有的部件], [第二行所有的部份], [第三行所有的部件], …]
    • 所有的部件Element 類似tkinter 中的部件Widget, 同樣有一堆選項, 絕大部份的選項都有預設值, 通常, 可能只要設定幾項就夠用了. 比如按鈕, 要設定是上面的文字,字型, 按鈕大小, 能產生事件, 按鈕代表字串, 其他的PySimpleGUI 會有相對的預設值.
    • 簡單的範例如下, 兩行文字, 第一行文字後面有個按鈕.
    • 還有一些容器的部件, 可以建立更復雜的佈局.
import PySimpleGUI as sg
layout = [
    [sg.Text('這是第一行, 後面有一按鈕', font=font, size = (20, 1)),
     sg.Button('結束', font=font, size=(6, 1), enable_events=True, key='Quit')],
    [sg.Text('這是第二行', font=font, size=(20, 1))]]
  1. 啟動視窗

    加上以下這一行, 視窗才會真正的建立. 但這樣還不行, 因為那只是視窗, 要有事件的處理才能真正算的上是 GUI.

window = sg.Window('這是視窗標題', layout=layout, finalize=True)
  1. 事件處理

    所謂的事件, 比如輸入裝置的動作, 像滑鼠, 鍵盤, 部件的動作, 以及程式的觸動等等, 這些全部都使用一個動作來讀取, 然後程式的主迴圈不停的迴圈讀取, 再根據事件的種類處理. 範例如下.

# def do_something(value):
# pass

While True:
    event, values = window.read()
    if event in [None, 'Quit'] # None 是視窗關閉事件, 'Quit' 是佈局中按鈕的代表字串
        break
# elif event == '其他部件的代表字串':
# value = values['其他部件的代表字串']
# do_something(value)
window.close()

就這樣, GUI 最基本的輪廓就完成了, 簡單介紹就這樣, 有需求再深入介紹一些細節.

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Jason Yang