小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

如何只用一行Python代碼制作一個GUI(圖形界面)?

 c智華 2022-05-16 發(fā)布于廣東

大家好,我是小F。

GUI(圖形用戶界面),顧名思義就是用圖形的方式,來顯示計算機操作的界面,更加方便且直觀。

一個好看又好用的GUI,可以大大提高大家的使用體驗,提高效率。

比如你想開發(fā)一個計算器,如果只是一個程序輸入,輸出窗口的話,是沒有用戶體驗的。

所以開發(fā)一個圖形化的小窗口,就變得很有必要。

今天,小F就給大家介紹如何只用一行Python代碼制作一個GUI。

主要使用Python的PySimpleGUI庫來完成這個工作。

# 安裝PySimpleGUI
pip install PySimpleGUI -i https://mirror.baidu.com/pypi/simple

詳細的接口文檔地址如下。

https://pysimplegui./en/latest/call%20reference/

▍1、選擇文件夾

首先導入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()方法,一行代碼就能實現(xiàn)選擇文件夾的操作。

示例如下。

圖片

點擊Browse按鈕,選擇文件夾,文本框就會顯示出文件夾的絕對路徑。

點擊OK按鈕,顯示最終選擇的路徑信息,再次點擊OK按鈕,結(jié)束窗口。

圖片

如果沒有選擇文件夾,而是直接點擊OK按鈕,會直接提示沒有選取文件夾。

▍2、選擇文件

選擇文件操作和上面選擇文件夾的有點相似。

不同的是,選擇文件可以設置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)

示例如下。

圖片

選擇好日期后,點擊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)

鍵入信息,示例如下。

圖片

點擊OK按鈕,返回輸入的文本信息。

如果沒有輸入,直接點擊OK按鈕,會提示沒有文本輸入。

▍5、彈窗無按鈕

# 顯示一個彈窗, 但沒有任何按鈕
sg.popup_no_buttons('You cannot click any buttons')

結(jié)果如下。

圖片

▍6、彈窗無標題

# 顯示一個沒有標題欄的彈窗
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、實戰(zhàn)

最后來個綜合實戰(zhàn)案例,將某個文件夾下所有的Excel文件中的sheet表,一一保存為單獨的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=Falseas 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按鈕后,就會開始表格轉(zhuǎn)換,操作如下。

圖片

使用了one_line_progress_meter()方法顯示程序處理的進度。

圖片

20表示有20次循環(huán),原始Excel文件總計有20個,需要處理20次,其他的都在上圖中標示出來咯。

好了,今天的分享就到這里了,有興趣的小伙伴可以自行去學習。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多