Python 在運維和辦公自動化中扮演著重要的角色,PySimpleGUI 是一款很棒的自動化輔助模塊,讓你更輕松的實作日常任務的自動化,
1 PySimpleGUI安裝
在命令列/終端輸入:pip install pysimplegui,等待安裝完成后,進入python環境,輸入import PySimpleGUI回車無誤后,確認安裝成功
2 PySimpleGUI制作簡易彈窗界面
2.1 兩種界面設計模式
很多人學習蟒蛇,不知道從何學起, 很多人學習python,掌握了基本語法之后,不知道在哪里尋找案例上手, 很多已經做了案例的人,卻不知道如何去學習更多高深的知識, 那么針對這三類人,我給大家提供一個好的學習平臺,免費獲取視頻教程,電子書,以及課程的源代碼! QQ群:101677771 歡迎加入,一起討論一起學習
(1) 單次顯示界面(one-shot window)
- 類似于彈窗,出現一次
- 常用于提示資訊,收集資訊
(2)持續顯示界面(Persistent window)
- 持續不斷顯示,除非用戶手動關閉
- 常作為軟體的主界面
2.2 制作彈窗
官網默認的庫的縮寫為sg,使用時建議保持統一,也是使用sg
彈窗型別:(第一種和第二種是一致的)
- sg.popup('注意!')
- sg.popup_ok('默認彈窗')
- sg.popup_yes_no('帶Yes和No按鈕的彈窗')
- sg.popup_cancel('帶cancel按鈕的彈窗')
- sg.popup_ok_cancel('帶OK和cancel按鈕的彈窗')
- sg.popup_error('帶紅色error按鈕的彈窗')
- sg.popup_auto_close('幾秒后自動關閉的彈窗')
最后一個執行后程式會在2s左右自動退出,除了以上的簡單的默認函式外,還可以手動設定引數,相關的引數如下
比如設定一個定制化的小視窗,進行相關引數的添加
sg.popup(
'這是彈窗',
title='Hello',
button_color=('#A81B0C', '#FFFFFF'),
background_color='#F47264',
line_width=2,
custom_text=' 好的 '
)
輸出結果:(第一個引數就是要顯示的資訊,可以是單個,也可多個字串,多個字串時候,默認換行,如果是單個字串可以通過line_with指定每行的寬度)
當第一個引數是多個字串時,自動換行顯示(由于自動的表單長寬很小,所以標題就沒有看到,但不是代表不顯示,下面的示例中就可以看到)
2.3 文字內容彈窗
采用popup_scrolled()方法,括號中添加要顯示的內容即可
text = '''大家好,
我們一起來學習PySimpleGUI制作簡單的圖形用戶界面,'''
sg.popup_scrolled(text,title='Hello')
輸出結果為:(這里的標題就正常的顯示出來了)
這個文字內容彈窗里面也有相關的設定引數,可以根據自己的需要進行設定,引數如下:(注意之前的彈窗的引數也可以在這類彈窗中使用,比如剛剛用的title)
2.4 獲取用戶輸入的彈窗
采用popup_get_text()方法,括號內容有點類似input()陳述句中的提示語,提醒用戶輸入
text1 = sg.popup_get_text('請輸入文字1')
print(text1)
text2 = sg.popup_get_text('請輸入文字2')
print(text2)
輸出結果為:(當點擊Ok時候控制臺輸出端就會獲取到用戶輸入的文字,如果是點擊Cancel,輸出端為None,這里執行了兩次用戶輸入彈出的指令,當第一次輸入后點擊Ok會自動彈出第二個視窗)
該類彈窗也有自己特定的引數供選擇,比如既然進行輸入的操作,有時輸入密碼時候就不希望別人看到,就可以采用輸入的顯示方式,如下
測驗進行密碼隱藏輸入,可以直接順勢將用戶輸入的密碼也以彈窗的形式
2.5 檔案選擇彈出視窗
直接采用sg.popup_get_file()方法,括號里面的內容也是輸入的提示語
選擇后就會把詳細的地址直接顯示在輸入框中,如下
那么同樣該類彈出也有自己的特有屬性引數設定,具體如下,里面的每個引數幾乎都是超級常用的引數,可以自行測驗一下,
默認后綴,這個引數也是常用的,比如在sublime中點擊另存為時候,本身是py檔案,在給檔案命名的時候只需要輸出檔案名,后綴自動給添加上去了,
2.6 檔案夾選擇視窗
采用sg.popup_get_folder()方法,括號里面的內容也是輸入的提示語,執行程式后會彈出選擇檔案的視窗,滑鼠選擇后就會把檔案夾的路徑添加到輸入
2.7 進度條彈窗
采用
sg.one_line_progress_meter()方法,括號中輸入相關的引數設定內容
for i in range(1000):
sg.one_line_progress_meter(
'進度條',
i + 1,
1000,
'該進度條key',
'這是一個進度條'
)
輸出結果為:(會進行動態加載,直到達到100%)
當然此類彈窗也有自己特有的引數設定,如下,比如常見的設定豎直的還橫向的,滾動條的上下限等,
比如嘗試一下不同引數的組合輸出
for i in range(1, 1000):
sg.one_line_progress_meter(
'進度條',
i + 1,
1000,
'該進度條key',
'這是一個進度條',
orientation='h',
bar_color=('#F47264', '#FFFFFF')
)
輸出結果為:
3 制作簡易壓縮軟體
3.1 功能需求
- 軟體運行后彈出視窗讓用戶選擇一個檔案夾
- 用戶選擇后再彈出視窗讓用戶選擇壓縮包保存的位置和名稱
- 用戶輸入完成后將該檔案夾內所有的檔案進行壓縮打包
- 完成壓縮后再彈出一個視窗告訴用戶這個壓縮包的體積大小
3.2 功能拆解
(1)軟體運行后彈出視窗讓用戶選擇一個檔案夾
- popup_get_folder()
(2)用戶選擇后再彈出視窗讓用戶選擇壓縮包保存的位置和名稱
- popup_get_file()
- save_as=True
- default_extension = 'zip'
(3)用戶輸入完成后將該檔案夾內所有的檔案進行壓縮打包
- zipfile模塊
(4)完成壓縮后再彈出一個視窗告訴用戶這個壓縮包的體積大小
- os.stat()讀取檔案資訊
- popup()彈窗顯示資料
3.3 全部代碼
參考代碼:(主要是細節部分,對于壓縮路徑的設定,需要進行處理一下,不然最后解壓縮的會出現很多層級的不必要檔案夾)
import PySimpleGUI as sg
import zipfile
import os
folder = sg.popup_get_folder('請選擇要壓縮的檔案夾')
zip_path = sg.popup_get_file(
'請選擇要保存的壓縮包位置',
save_as=True,
default_extension='zip',
file_types=(('壓縮包', '.zip'), )
)
with zipfile.ZipFile(zip_path, 'w') as zipobj:
for file in os.scandir(folder):
zipobj.write(file.path, file.path.replace(folder, '.'))
zip_size = os.stat(zip_path).st_size // 1024
sg.popup(f'壓縮包體積大小為:{zip_size} KB')
輸出結果演示如下:(完美,撒花??ヽ(°▽°)ノ?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/396054.html
標籤:其他
