<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
GUI(圖形化使用者介面),顧名思義就是用圖形的方式,來顯示計算機操作的介面,更加方便且直觀。
一個好看又好用的GUI,可以大大提高大家的使用體驗,提高效率。
比如你想開發一個計算器,如果只是一個程式輸入,輸出視窗的話,是沒有使用者體驗的。
所以開發一個圖形化的小視窗,就變得很有必要。
今天,小F就給大家介紹如何只用一行Python程式碼製作一個GUI。
主要使用Python的PySimpleGUI庫來完成這個工作。
# 安裝PySimpleGUI pip install PySimpleGUI -i https://mirror.baidu.com/pypi/simple
詳細的介面檔案地址。
首先匯入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()方法,一行程式碼就能實現選擇資料夾的操作。
範例如下
點選Browse按鈕,選擇資料夾,文字方塊就會顯示出資料夾的絕對路徑。
點選OK按鈕,顯示最終選擇的路徑資訊,再次點選OK按鈕,結束視窗。
如果沒有選擇資料夾,而是直接點選OK按鈕,會直接提示沒有選取資料夾。
選擇檔案操作和上面選擇資料夾的有點相似。
# 視窗顯示文字方塊和瀏覽按鈕, 以便選擇檔案 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)
不同的是,選擇檔案可以設定multiple_files(是否為多個檔案)和file_types(檔案型別)引數。
範例如下
選擇了多個Excel檔案,最終結果返回了所有檔案的路徑地址。
使用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)
範例如下
選擇好日期後,點選OK按鈕,即可返回日期元組結果。
使用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)
鍵入資訊,範例如下
點選OK按鈕,返回輸入的文字資訊。
如果沒有輸入,直接點選OK按鈕,會提示沒有文字輸入。
# 顯示一個彈窗, 但沒有任何按鈕 sg.popup_no_buttons("You cannot click any buttons")
結果如下
# 顯示一個沒有標題列的彈窗 sg.popup_no_titlebar("A very simple popup")
結果如下
# 顯示彈窗且只有OK按鈕 sg.popup_ok("You can only click on 'OK'")
結果如下
# 顯示彈窗且只有error按鈕, 按鈕帶顏色 sg.popup_error("Something went wrong")
結果如下
# 顯示一個「通知視窗」, 通常在螢幕的右下角, 視窗會慢慢淡入淡出 sg.popup_notify("Task done!")
結果如下, Task done提示資訊淡入淡出。
# 顯示彈窗以及是和否按鈕, 選擇判斷 answer = sg.popup_yes_no("Do you like this video?") sg.popup("You have selected", answer)
結果如下
上面那些彈窗都是庫自帶的,如果想自定義建立,可以參考下面的方法。
# 自定義建立彈窗, 一行程式碼完成 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)
結果如下
最後來個綜合實戰案例,將某個資料夾下所有的Excel檔案中的sheet表,一一儲存為單獨的Excel檔案。
程式碼如下,需要安裝xlwings庫,其中pathlib庫是內建的。
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): # 顯示進度 sg.one_line_progress_meter("Current Progress", index + 1, len(files)) wb = app.books.open(file) # 提取sheet表為單獨的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庫對輸入資料夾進行遍歷,查詢出所有xls格式檔案的路徑地址。
點選OK按鈕後,就會開始表格轉換,操作如下。
使用了one_line_progress_meter()方法顯示程式處理的進度。
20表示有20次迴圈,原始Excel檔案總計有20個,需要處理20次,其他的都在上圖中標示出來咯。
以上就是教你如何用一行Python程式碼實現GUI圖形介面的詳細內容,更多關於PythonGUI圖形介面的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45