大家好,GUI(圖形用戶界面),顧名思義就是用圖形的方式,來顯示計(jì)算機(jī)操作的界面,更加方便且直觀。
一個好看又好用的GUI,可以大大提高大家的使用體驗(yàn),提高效率。比如你想開發(fā)一個計(jì)算器,如果只是一個程序輸入,輸出窗口的話,是沒有用戶體驗(yàn)的。所以開發(fā)一個圖形化的小窗口,就變得很有必要。
今天,我就給大家介紹如何只用一行Python代碼制作一個GUI,主要使用Python的PySimpleGUI庫來完成這個工作。喜歡記得收藏、關(guān)注、點(diǎn)贊。
注:完整版代碼、資料、技術(shù)交流文末獲取。
# 安裝PySimpleGUI
pip install PySimpleGUI -i https://mirror.baidu.com/pypi/simple
詳細(xì)的接口文檔地址如下。
https://pysimplegui.readthedocs.io/en/latest/call%20reference/
▍1、選擇文件夾
首先導(dǎo)入PySimpleGUI庫,并且用縮寫sg來表示。
import PySimpleGUI as sg
# 窗口顯示文本框和瀏覽按鈕, 以便選擇一個文件夾
dir_path = sg.popup_get_folder("Select Folder")
if not dir_path:
sg.popup("Cancel", "No folder selected")
raise SystemExit("Cancelling: no folder selected")
else:
sg.popup("The folder you chose was", dir_path)
通過使用PySimpleGUI的popup_get_folder()方法,一行代碼就能實(shí)現(xiàn)選擇文件夾的操作。
示例如下。
點(diǎn)擊Browse按鈕,選擇文件夾,文本框就會顯示出文件夾的絕對路徑。
點(diǎn)擊OK按鈕,顯示最終選擇的路徑信息,再次點(diǎn)擊OK按鈕,結(jié)束窗口。
如果沒有選擇文件夾,而是直接點(diǎn)擊OK按鈕,會直接提示沒有選取文件夾。
▍2、選擇文件
選擇文件操作和上面選擇文件夾的有點(diǎn)相似。
不同的是,選擇文件可以設(shè)置multiple_files(是否為多個文件)和file_types(文件類型)參數(shù)。
# 窗口顯示文本框和瀏覽按鈕, 以便選擇文件
fname = sg.popup_get_file("Choose Excel file", multiple_files=True, file_types=(("Excel Files", "*.xls*"),),)
if not fname:
sg.popup("Cancel", "No filename supplied")
raise SystemExit("Cancelling: no filename supplied")
else:
sg.popup("The filename you chose was", fname)
示例如下。
選擇了多個Excel文件,最終結(jié)果返回了所有文件的路徑地址。
▍3、選擇日期
使用popup_get_date()方法,顯示一個日歷窗口。
# 顯示一個日歷窗口, 通過用戶的選擇, 返回一個元組(月, 日, 年)
date = sg.popup_get_date()
if not date:
sg.popup("Cancel", "No date picked")
raise SystemExit("Cancelling: no date picked")
else:
sg.popup("The date you chose was", date)
示例如下。
選擇好日期后,點(diǎn)擊OK按鈕,即可返回日期元組結(jié)果。
▍4、輸入文本
使用popup_get_text()方法,顯示一個文本輸入框。
# 顯示文本輸入框, 輸入文本信息, 返回輸入的文本, 如果取消則返回None
text = sg.popup_get_text("Please enter a text:")
if not text:
sg.popup("Cancel", "No text was entered")
raise SystemExit("Cancelling: no text entered")
else:
sg.popup("You have entered", text)
鍵入信息,示例如下。
點(diǎn)擊OK按鈕,返回輸入的文本信息。
如果沒有輸入,直接點(diǎn)擊OK按鈕,會提示沒有文本輸入。
▍5、彈窗無按鈕
# 顯示一個彈窗, 但沒有任何按鈕
sg.popup_no_buttons("You cannot click any buttons")
結(jié)果如下。
▍6、彈窗無標(biāo)題
# 顯示一個沒有標(biāo)題欄的彈窗
sg.popup_no_titlebar("A very simple popup")
結(jié)果如下。
▍7、彈窗只有OK按鈕
# 顯示彈窗且只有OK按鈕
sg.popup_ok("You can only click on 'OK'")
結(jié)果如下。
▍8、彈窗只有Error按鈕(紅色)
# 顯示彈窗且只有error按鈕, 按鈕帶顏色
sg.popup_error("Something went wrong")
結(jié)果如下。
▍9、顯示通知窗口
# 顯示一個“通知窗口”, 通常在屏幕的右下角, 窗口會慢慢淡入淡出
sg.popup_notify("Task done!")
結(jié)果如下, Task done提示信息淡入淡出。
▍10、彈窗選擇
# 顯示彈窗以及是和否按鈕, 選擇判斷
answer = sg.popup_yes_no("Do you like this video?")sg.popup("You have selected", answer)
結(jié)果如下。
▍11、自定義彈窗
上面那些彈窗都是庫自帶的,如果想自定義創(chuàng)建,可以參考下面的方法。
# 自定義創(chuàng)建彈窗, 一行代碼完成
choice, _ = sg.Window(
"Continue?",
[[sg.T("Do you want to subscribe to this channel?")], [sg.Yes(s=10), sg.No(s=10), sg.Button('Maybe', s=10)]],
disable_close=True,
).read(close=True)
sg.popup("Your choice was", choice)
結(jié)果如下。
▍12、實(shí)戰(zhàn)
最后來個綜合實(shí)戰(zhàn)案例,將某個文件夾下所有的Excel文件中的sheet表,一一保存為單獨(dú)的Excel文件。
代碼如下,需要安裝xlwings庫,其中pathlib庫是內(nèi)置的。
from pathlib import Path
import PySimpleGUI as sg
import xlwings as xw
# 選擇輸入文件夾
INPUT_DIR = sg.popup_get_folder("Select an input folder")
if not INPUT_DIR:
sg.popup("Cancel", "No folder selected")
raise SystemExit("Cancelling: no folder selected")
else:
INPUT_DIR = Path(INPUT_DIR)
# 選擇輸出文件夾
OUTPUT_DIR = sg.popup_get_folder("Select an output folder")
if not OUTPUT_DIR:
sg.popup("Cancel", "No folder selected")
raise SystemExit("Cancelling: no folder selected")
else:
OUTPUT_DIR = Path(OUTPUT_DIR)
# 獲取輸入文件夾中所有xls格式文件的路徑列表
files = list(INPUT_DIR.rglob("*.xls*"))
with xw.App(visible=False) as app:
for index, file in enumerate(files):
# 顯示進(jìn)度
sg.one_line_progress_meter("Current Progress", index + 1, len(files))
wb = app.books.open(file)
# 提取sheet表為單獨(dú)的Excel表格
for sheet in wb.sheets:
wb_new = app.books.add()
sheet.copy(after=wb_new.sheets[0])
wb_new.sheets[0].delete()
wb_new.save(OUTPUT_DIR / f"{file.stem}_{sheet.name}.xlsx")
wb_new.close()
sg.popup_ok("Task done!")
首先選擇輸入文件夾和輸出文件夾的地址。
然后通過pathlib庫對輸入文件夾進(jìn)行遍歷,查找出所有xls格式文件的路徑地址。
點(diǎn)擊OK按鈕后,就會開始表格轉(zhuǎn)換,操作如下。
使用了one_line_progress_meter()方法顯示程序處理的進(jìn)度。
20表示有20次循環(huán),原始Excel文件總計(jì)有20個,需要處理20次,其他的都在上圖中標(biāo)示出來咯。
好了,今天的分享就到這里了,有興趣的小伙伴可以自行去學(xué)習(xí)。
別忘了點(diǎn)贊,在看哈~
推薦文章
-
李宏毅《機(jī)器學(xué)習(xí)》國語課程(2022)來了
-
有人把吳恩達(dá)老師的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)做成了中文版
-
上癮了,最近又給公司擼了一個可視化大屏(附源碼)
-
如此優(yōu)雅,4款 Python 自動數(shù)據(jù)分析神器真香啊
-
梳理半月有余,精心準(zhǔn)備了17張知識思維導(dǎo)圖,這次要講清統(tǒng)計(jì)學(xué)
-
香的很,整理了20份可視化大屏模板
技術(shù)交流
完整代碼、數(shù)據(jù)獲取,可以找我來要
目前開通了技術(shù)交流群,群友已超過3000人,添加時最好的備注方式為:來源+興趣方向,方便找到志同道合的朋友文章來源:http://www.zghlxwxcb.cn/news/detail-599632.html
- 方式①、發(fā)送如下圖片至微信,長按識別,后臺回復(fù):加群;
- 方式②、添加微信號:dkl88191,備注:來自CSDN
- 方式③、微信搜索公眾號:Python學(xué)習(xí)與數(shù)據(jù)挖掘,后臺回復(fù):加群
技術(shù)交流、求職內(nèi)推、干貨匯總、與 3000+來自阿里、北大、清華、中科院、CMU、騰訊、百度等名校名企開發(fā)者互動交流~文章來源地址http://www.zghlxwxcb.cn/news/detail-599632.html
到了這里,關(guān)于PySimpleGUI:使用 Python 輕松制作一個圖形界面(GUI)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!