一個非常簡單好用的Python圖形界面庫(PysimpleGUI)
前一陣,我在為朋友編寫一個源代碼監控程序的時候,發現瞭一個 Python 領域非常簡單好用的圖形界面庫。
說起圖形界面庫,你可能會想到 TkInter、PyQt、PyGUI 等流行的圖形界面庫,我也曾經嘗試使用,一個很直觀的感受就是,這太難用瞭。就去網上搜搜,看看有沒有一些 demo,拿來改改,結果很少有,當時我就放棄瞭這些圖形庫的學習,轉而使用瞭 vue+flask 的形式以瀏覽器網頁作為程序界面,因為我會這個,即使實現起來稍微麻煩,但是也快。
那有朋友可能問瞭:一定要學習圖形界面嗎?
其實不一定,如果你寫的程序都是自己用,或者配合其他程序員使用,那麼直接命令行調用即可,完全不用學習圖形界面?那什麼時候要學呢?如果你要做遊戲,或者你要為他人(非技術人員)編寫軟件工具,那麼你就需要學習圖形界面瞭。我是後者,偶爾受邀幫別人寫點小工具,因此有個圖形界面體驗會好很多。
今天要說的這個庫就是 PySimpleGUI,在 GitHub 倉庫[1]有 5.1K 個 star,20 天前還有人提交代碼,可以說非常火熱瞭。
我看瞭官方文檔,找瞭個 demo,花瞭 2 個小時的時間,寫瞭 56 行代碼,就搞定瞭一個具有圖形界面的監控工具,如下:
要說 PysimpleGUI 最吸引我的地方,在於它有 200 多個示例程序,幾乎覆蓋瞭日常的開發需求,拿來稍作修改就可以用,著實方便。
PysimpleGUI 內部封裝瞭 tkinter,Qt(pyside2),wxPython和 Remi,Remi 用於瀏覽器支持,因此你很容易將你的界面搬到瀏覽器中而無需修改代碼。如下圖:
還有最吸引我的一點,就是足夠簡單,在幾分鐘內用幾行代碼就可以構建自定義 GUI 佈局,對於初學者來說足夠容易,對於高級用戶來說足夠強大。廣泛的文檔。有 100 多種內置顏色主題,200 多個示例程序[2],還經常更新。如果你玩 Raspberry Pi,也可以用這個庫寫界面,你說好用不好用。
通常一個 PySimpleGUI 程序包含 5 個部分,見下面代碼的註釋:
import PySimpleGUI as sg # Part 1 - 導入庫 # 定義窗口的內容 layout = [ [sg.Text("What's your name?")], # Part 2 - 排版 [sg.Input()], [sg.Button('Ok')] ] # 創建窗口 window = sg.Window('Window Title', layout) # Part 3 - 窗口定義 # Display and interact with the Window event, values = window.read() # Part 4 - 開啟主循環 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 - 關閉窗口
執行上述代碼,會得到一個如下圖所示的程序:
這僅僅是一個類似 hello world 的程序,PySimpleGUI 還可以做出更加強大的圖形界面和遊戲界面,
多個窗口
我看到許多新程序員都在掙紮的一件事是在他們選擇的GUI工具包中打開多個窗口。 幸運的是,PySimpleGUI明確標明瞭如何執行此操作的說明。 實際上,他們有兩種不同的“設計模式”來做這種事情。
為簡便起見,我將僅展示如何執行兩個活動窗口:
# -*- 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 倉庫: https://github.com/PySimpleGUI/PySimpleGUI
[2] 200 多個示例程序: https://github.com/PySimpleGUI/PySimpleGUI/tree/master/DemoPrograms
到此這篇關於一個非常簡單好用的Python圖形界面庫的文章就介紹到這瞭,更多相關Python 圖形界面庫內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python使用PySimpleGUI設置進度條及控件使用
- 隻用40行Python代碼就能寫出pdf轉word小工具
- Python制作進度條的四種方法總結
- Python制作進度條的幾種方法
- Python實現清理重復文件功能的示例代碼