天天看點

Python 自動化庫介紹 PySimpleGUI

python在運維和辦公自動化中扮演着重要的角色,PySimpleGUI 是一款很棒的自動化輔助子產品,讓你更輕松的實作日常任務的自動化。

1、PySimpleGUI安裝

在指令行/終端輸入:

pip install pysimplegui

,等待安裝完成後,進入python環境,輸入

import PySimpleGUI

回車無誤後,确認安裝成

Python 自動化庫介紹 PySimpleGUI

2、PySimpleGUI制作簡易彈窗界面

2.1 兩種界面設計模式

(1) 單次顯示界面(one-shot window)

  • 類似于彈窗,出現一次
  • 常用于提示資訊,收集資訊

(2)持續顯示界面(Persistent window)

  • 持續不斷顯示,除非使用者手動關閉
  • 常作為軟體的主界面

2.2 制作彈窗

官網預設的庫的縮寫為sg,使用時建議保持統一,也是使用sg

Python 自動化庫介紹 PySimpleGUI

彈窗類型:(第一種和第二種是一緻的)

  • 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左右自動退出,除了以上的簡單的預設函數外,還可以手動設定參數,相關的參數如下

Python 自動化庫介紹 PySimpleGUI

比如設定一個定制化的小視窗,進行相關參數的添加

sg.popup(
  '這是彈窗',
  title='Hello',
  button_color=('#A81B0C', '#FFFFFF'),
  background_color='#F47264',
  line_width=2,
  custom_text=' 好的 '
)           

輸出結果:(第一個參數就是要顯示的資訊,可以是單個,也可多個字元串,多個字元串時候,預設換行,如果是單個字元串可以通過line_with指定每行的寬度)

Python 自動化庫介紹 PySimpleGUI

當第一個參數是多個字元串時,自動換行顯示(由于自動的窗體長寬很小,是以标題就沒有看到,但不是代表不顯示,下面的示例中就可以看到)

Python 自動化庫介紹 PySimpleGUI

2.3 文字内容彈窗

采用

popup_scrolled()

方法,括号中添加要顯示的内容即可

text = '''大家好,
我們一起來學習PySimpleGUI制作簡單的圖形使用者界面。'''
sg.popup_scrolled(text,title='Hello')           

輸出結果為:(這裡的标題就正常的顯示出來了)

Python 自動化庫介紹 PySimpleGUI

這個文字内容彈窗裡面也有相關的設定參數,可以根據自己的需要進行設定,參數如下:(注意之前的彈窗的參數也可以在這類彈窗中使用,比如剛剛用的title)

Python 自動化庫介紹 PySimpleGUI

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會自動彈出第二個視窗)

Python 自動化庫介紹 PySimpleGUI

該類彈窗也有自己特定的參數供選擇,比如既然進行輸入的操作,有時輸入密碼時候就不希望别人看到,就可以采用輸入的顯示方式,如下

Python 自動化庫介紹 PySimpleGUI

測試進行密碼隐藏輸入,可以直接順勢将使用者輸入的密碼也以彈窗的形式展現

Python 自動化庫介紹 PySimpleGUI

2.5 檔案選擇彈出視窗

直接采用

sg.popup_get_file()

方法,括号裡面的内容也是輸入的提示語

Python 自動化庫介紹 PySimpleGUI

選擇後就會把詳細的位址直接顯示在輸入框中,如下

Python 自動化庫介紹 PySimpleGUI

那麼同樣該類彈出也有自己的特有屬性參數設定,具體如下。裡面的每個參數幾乎都是超級常用的參數,可以自行測試一下。

Python 自動化庫介紹 PySimpleGUI

預設字尾,這個參數也是常用的,比如在sublime中點選另存為時候,本身是py檔案,在給檔案命名的時候隻需要輸出檔案名,字尾自動給添加上去了。

Python 自動化庫介紹 PySimpleGUI

2.6 檔案夾選擇視窗

sg.popup_get_folder()

方法,括号裡面的内容也是輸入的提示語。執行程式後會彈出選擇檔案的視窗,滑鼠選擇後就會把檔案夾的路徑添加到輸入框中

Python 自動化庫介紹 PySimpleGUI

2.7 進度條彈窗

sg.one_line_progress_meter()

方法,括号中輸入相關的參數設定内容

for i in range(1000):
  sg.one_line_progress_meter(
    '進度條',
    i + 1,
    1000,
    '該進度條key',
    '這是一個進度條'
  )           

輸出結果為:(會進行動态加載,直到達到100\%)

Python 自動化庫介紹 PySimpleGUI

當然此類彈窗也有自己特有的參數設定,如下。比如常見的設定豎直的還橫向的,滾動條的上下限等。

Python 自動化庫介紹 PySimpleGUI

比如嘗試一下不同參數的組合輸出

for i in range(1, 1000):
  sg.one_line_progress_meter(
    '進度條',
    i + 1,
    1000,
    '該進度條key',
    '這是一個進度條',
    orientation='h',
    bar_color=('#F47264', '#FFFFFF')
  )           

輸出結果為:

Python 自動化庫介紹 PySimpleGUI

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')