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

作者:Python无霸哥 时间:2021-10-15 01:38:30 

一、选择文件夹

首先导入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按钮,会直接提示没有选取文件夹。

二、选择文件

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

# 窗口显示文本框和浏览按钮, 以便选择文件
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文件,最终结果返回了所有文件的路径地址。

三、选择日期

使用popup_get_date()方法,显示一个日历窗口。

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

示例如下

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

选择好日期后,点击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)

键入信息,示例如下

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

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

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

五、弹窗无按钮

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

结果如下

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

六、弹窗无标题

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

结果如下

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

七、弹窗只有OK按钮

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

结果如下

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

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

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

结果如下

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

九、显示通知窗口

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

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

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

十、弹窗选择

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

结果如下

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

十一、自定义弹窗

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

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

实战

最后来个综合实战案例,将某个文件夹下所有的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次,其他的都在上图中标示出来咯。

来源:https://blog.csdn.net/weixin_45841831/article/details/128504896

标签:Python,GUI,图形界面
0
投稿

猜你喜欢

  • ASC码对照表

    2008-08-07 13:07:00
  • 使用Python的Tornado框架实现一个简单的WebQQ机器人

    2023-03-19 03:26:09
  • PHP htmlentities()函数用法讲解

    2023-06-04 14:47:30
  • Python深入浅出分析enum枚举类

    2022-07-07 15:09:14
  • 如何利用Python快速统计文本的行数

    2021-11-15 19:48:12
  • Dreamweaver小技巧:超高速下载图像

    2009-07-14 21:59:00
  • 基于pytorch的保存和加载模型参数的方法

    2023-02-07 00:24:12
  • Python defaultdict方法使用分析

    2023-01-02 18:05:35
  • form 元素内的字段 name 不要跟 form 属性名称一致

    2008-10-22 13:25:00
  • Python爬取APP下载链接的实现方法

    2022-04-10 02:12:27
  • 详解一种用django_cache实现分布式锁的方式

    2023-11-08 03:50:45
  • Dreamweaver如何制作会移动的广告条

    2010-10-20 20:04:00
  • AJAX的jQuery实现入门(二)

    2008-05-01 13:04:00
  • 在 SQL Server数据库开发中的十大问题

    2009-01-20 14:56:00
  • Webots下载安装 + Pycharm联调使用教程

    2023-02-20 23:35:43
  • jQuery.sheet – 创建Excel界面风格的jQuery在线应用

    2010-01-27 13:03:00
  • 详解python3百度指数抓取实例

    2022-01-11 03:06:59
  • 如何让Firefox2和Firefox3在Windows下共存并同时运行?

    2008-06-01 15:50:00
  • Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法

    2023-07-14 14:37:00
  • python继承threading.Thread实现有返回值的子类实例

    2023-06-07 19:01:15
  • asp之家 网络编程 m.aspxhome.com