教你如何用一行Python代码实现GUI图形界面

目录

GUI(图形用户界面),顾名思义就是用图形的方式,来显示计算机操作的界面,更加方便且直观。

一个好看又好用的GUI,可以大大提高大家的使用体验,提高效率。

比如你想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没有用户体验的。

所以开发一个图形化的小窗口,就变得很有必要。

今天,小F就给大家介绍如何只用一行Python代码制作一个GUI。

主要使用Python的PySimpleGUI库来完成这个工作。

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

详细的接口文档地址

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()方法,一行代码就能实现选择文件夹的操作。

示例如下

教你如何用一行Python代码实现GUI图形界面

点击Browse按钮,选择文件夹,文本框就会显示出文件夹的绝对路径。

点击OK按钮,显示最终选择的路径信息,再次点击OK按钮,结束窗口。

教你如何用一行Python代码实现GUI图形界面

如果没有选择文件夹,而是直接点击OK按钮,会直接提示没有选取文件夹。

2、选择文件

选择文件操作和上面选择文件夹的有点相似。

# 窗口显示文本框和浏览按钮, 以便选择文件
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(文件类型)参数。

示例如下

教你如何用一行Python代码实现GUI图形界面

选择了多个Excel文件,最终结果返回了所有文件的路径地址。

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)

示例如下

教你如何用一行Python代码实现GUI图形界面

选择好日期后,点击OK按钮,即可返回日期元组结果。

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)

键入信息,示例如下

教你如何用一行Python代码实现GUI图形界面

点击OK按钮,返回输入的文本信息。

如果没有输入,直接点击OK按钮,会提示没有文本输入。

5、弹窗无按钮

# 显示一个弹窗, 但没有任何按钮
sg.popup_no_buttons(\"You cannot click any buttons\")

结果如下

教你如何用一行Python代码实现GUI图形界面

6、弹窗无标题

# 显示一个没有标题栏的弹窗
sg.popup_no_titlebar(\"A very simple popup\")

结果如下

教你如何用一行Python代码实现GUI图形界面

7、弹窗只有OK按钮

# 显示弹窗且只有OK按钮
sg.popup_ok(\"You can only click on \'OK\'\")

结果如下

教你如何用一行Python代码实现GUI图形界面

8、弹窗只有Error按钮(红色)

# 显示弹窗且只有error按钮, 按钮带颜色
sg.popup_error(\"Something went wrong\")

结果如下

教你如何用一行Python代码实现GUI图形界面

9、显示通知窗口

# 显示一个“通知窗口”, 通常在屏幕的右下角, 窗口会慢慢淡入淡出
sg.popup_notify(\"Task done!\")

结果如下, Task done提示信息淡入淡出。

教你如何用一行Python代码实现GUI图形界面

10、弹窗选择

# 显示弹窗以及是和否按钮, 选择判断
answer = sg.popup_yes_no(\"Do you like this video?\")
sg.popup(\"You have selected\", answer)

结果如下

教你如何用一行Python代码实现GUI图形界面

11、自定义弹窗

上面那些弹窗都是库自带的,如果想自定义创建,可以参考下面的方法。

# 自定义创建弹窗, 一行代码完成
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)

结果如下

教你如何用一行Python代码实现GUI图形界面

12、实战

最后来个综合实战案例,将某个文件夹下所有的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格式文件的路径地址。

教你如何用一行Python代码实现GUI图形界面

点击OK按钮后,就会开始表格转换,操作如下。

教你如何用一行Python代码实现GUI图形界面

使用了one_line_progress_meter()方法显示程序处理的进度。

教你如何用一行Python代码实现GUI图形界面

20表示有20次循环,原始Excel文件总计有20个,需要处理20次,其他的都在上图中标示出来咯。

以上就是教你如何用一行Python代码实现GUI图形界面的详细内容,更多关于PythonGUI图形界面的资料请关注其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容