一個(gè)非常簡(jiǎn)單好用的Python圖形界面庫(kù)(PysimpleGUI)
前一陣,我在為朋友編寫(xiě)一個(gè)源代碼監(jiān)控程序的時(shí)候,發(fā)現(xiàn)了一個(gè) Python 領(lǐng)域非常簡(jiǎn)單好用的圖形界面庫(kù)。
說(shuō)起圖形界面庫(kù),你可能會(huì)想到 TkInter、PyQt、PyGUI 等流行的圖形界面庫(kù),我也曾經(jīng)嘗試使用,一個(gè)很直觀的感受就是,這太難用了。就去網(wǎng)上搜搜,看看有沒(méi)有一些 demo,拿來(lái)改改,結(jié)果很少有,當(dāng)時(shí)我就放棄了這些圖形庫(kù)的學(xué)習(xí),轉(zhuǎn)而使用了 vue+flask 的形式以瀏覽器網(wǎng)頁(yè)作為程序界面,因?yàn)槲視?huì)這個(gè),即使實(shí)現(xiàn)起來(lái)稍微麻煩,但是也快。
那有朋友可能問(wèn)了:一定要學(xué)習(xí)圖形界面嗎?
其實(shí)不一定,如果你寫(xiě)的程序都是自己用,或者配合其他程序員使用,那么直接命令行調(diào)用即可,完全不用學(xué)習(xí)圖形界面?那什么時(shí)候要學(xué)呢?如果你要做游戲,或者你要為他人(非技術(shù)人員)編寫(xiě)軟件工具,那么你就需要學(xué)習(xí)圖形界面了。我是后者,偶爾受邀幫別人寫(xiě)點(diǎn)小工具,因此有個(gè)圖形界面體驗(yàn)會(huì)好很多。
今天要說(shuō)的這個(gè)庫(kù)就是 PySimpleGUI,在 GitHub 倉(cāng)庫(kù)[1]有 5.1K 個(gè) star,20 天前還有人提交代碼,可以說(shuō)非?;馃崃?。
我看了官方文檔,找了個(gè) demo,花了 2 個(gè)小時(shí)的時(shí)間,寫(xiě)了 56 行代碼,就搞定了一個(gè)具有圖形界面的監(jiān)控工具,如下:
要說(shuō) PysimpleGUI 最吸引我的地方,在于它有 200 多個(gè)示例程序,幾乎覆蓋了日常的開(kāi)發(fā)需求,拿來(lái)稍作修改就可以用,著實(shí)方便。
PysimpleGUI 內(nèi)部封裝了 tkinter,Qt(pyside2),wxPython和 Remi,Remi 用于瀏覽器支持,因此你很容易將你的界面搬到瀏覽器中而無(wú)需修改代碼。如下圖:

還有最吸引我的一點(diǎn),就是足夠簡(jiǎn)單,在幾分鐘內(nèi)用幾行代碼就可以構(gòu)建自定義 GUI 布局,對(duì)于初學(xué)者來(lái)說(shuō)足夠容易,對(duì)于高級(jí)用戶來(lái)說(shuō)足夠強(qiáng)大。廣泛的文檔。有 100 多種內(nèi)置顏色主題,200 多個(gè)示例程序[2],還經(jīng)常更新。如果你玩 Raspberry Pi,也可以用這個(gè)庫(kù)寫(xiě)界面,你說(shuō)好用不好用。
通常一個(gè) PySimpleGUI 程序包含 5 個(gè)部分,見(jiàn)下面代碼的注釋?zhuān)?/p>
import PySimpleGUI as sg # Part 1 - 導(dǎo)入庫(kù)
# 定義窗口的內(nèi)容
layout = [ [sg.Text("What's your name?")], # Part 2 - 排版
[sg.Input()],
[sg.Button('Ok')] ]
# 創(chuàng)建窗口
window = sg.Window('Window Title', layout) # Part 3 - 窗口定義
# Display and interact with the Window
event, values = window.read() # Part 4 - 開(kāi)啟主循環(huán) window.read()
# Do something with the information gathered
print('Hello', values[0], "! Thanks for trying PySimpleGUI")
# Finish up by removing from the screen
window.close() # Part 5 - 關(guān)閉窗口
執(zhí)行上述代碼,會(huì)得到一個(gè)如下圖所示的程序:

這僅僅是一個(gè)類(lèi)似 hello world 的程序,PySimpleGUI 還可以做出更加強(qiáng)大的圖形界面和游戲界面,
多個(gè)窗口
我看到許多新程序員都在掙扎的一件事是在他們選擇的GUI工具包中打開(kāi)多個(gè)窗口。 幸運(yùn)的是,PySimpleGUI明確標(biāo)明了如何執(zhí)行此操作的說(shuō)明。 實(shí)際上,他們有兩種不同的“設(shè)計(jì)模式”來(lái)做這種事情。
為簡(jiǎn)便起見(jiàn),我將僅展示如何執(zhí)行兩個(gè)活動(dòng)窗口:
# -*- coding: utf-8 -*-
# https://www.jianshu.com/u/69f40328d4f0
# https://github.com/china-testing/python-api-tesing
# https://china-testing.github.io/
# support q group: 630011153 144081101
import PySimpleGUI as sg
# Create some widgets
ok_btn = sg.Button('Open Second Window')
cancel_btn = sg.Button('Cancel')
layout = [[ok_btn, cancel_btn]]
# Create the first Window
window = sg.Window('Window 1', layout)
win2_active = False
# Create the event loop
while True:
event1, values1 = window.read(timeout=100)
if event1 in (None, 'Cancel'):
# User closed the Window or hit the Cancel button
break
if not win2_active and event1 == 'Open Second Window':
win2_active = True
layout2 = [[sg.Text('Window 2')],
[sg.Button('Exit')]]
window2 = sg.Window('Window 2', layout2)
if win2_active:
events2, values2 = window2.Read(timeout=100)
if events2 is None or events2 == 'Exit':
win2_active = False
window2.close()
window.close()
參考資料
[1] GitHub 倉(cāng)庫(kù): https://github.com/PySimpleGUI/PySimpleGUI
[2] 200 多個(gè)示例程序: https://github.com/PySimpleGUI/PySimpleGUI/tree/master/DemoPrograms
到此這篇關(guān)于一個(gè)非常簡(jiǎn)單好用的Python圖形界面庫(kù)的文章就介紹到這了,更多相關(guān)Python 圖形界面庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python四款GUI圖形界面庫(kù)介紹
- Python PyQt5運(yùn)行程序把輸出信息展示到GUI圖形界面上
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5信號(hào)與槽多窗口數(shù)據(jù)傳遞詳細(xì)使用方法與實(shí)例
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5布局控件QHBoxLayout詳細(xì)使用方法與實(shí)例
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5表格控件QTableView詳細(xì)使用方法與實(shí)例
- 教你用一行Python代碼實(shí)現(xiàn)GUI圖形界面
相關(guān)文章
Pandas使用stack和pivot實(shí)現(xiàn)數(shù)據(jù)透視的方法
筆者最近正在學(xué)習(xí)Pandas數(shù)據(jù)分析,將自己的學(xué)習(xí)筆記做成一套系列文章。本節(jié)主要記錄Pandas中使用stack和pivot實(shí)現(xiàn)數(shù)據(jù)透視。感興趣的小伙伴們可以參考一下2021-09-09
Python的多種對(duì)象工廠模式方便代碼維護(hù)擴(kuò)展
這篇文章主要為大家介紹了Python的多種對(duì)象工廠模式更方便我們進(jìn)行代碼維護(hù)擴(kuò)展,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
torch.optim優(yōu)化算法理解之optim.Adam()解讀
這篇文章主要介紹了torch.optim優(yōu)化算法理解之optim.Adam()解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
基于python3 的百度圖片下載器的實(shí)現(xiàn)代碼
這篇文章主要介紹了基于python3 的百度圖片下載器的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
pytorch使用 to 進(jìn)行類(lèi)型轉(zhuǎn)換方式
今天小編就為大家分享一篇pytorch使用 to 進(jìn)行類(lèi)型轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
tensorflow模型文件(ckpt)轉(zhuǎn)pb文件的方法(不知道輸出節(jié)點(diǎn)名)
這篇文章主要介紹了tensorflow模型文件(ckpt)轉(zhuǎn)pb文件(不知道輸出節(jié)點(diǎn)名),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
在keras下實(shí)現(xiàn)多個(gè)模型的融合方式
這篇文章主要介紹了在keras下實(shí)現(xiàn)多個(gè)模型的融合方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
python學(xué)習(xí) 流程控制語(yǔ)句詳解
下面小編就為大家?guī)?lái)一篇python學(xué)習(xí) 流程控制語(yǔ)句詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06

