PySimpleGUI:使用 Python 轻松制作一个图形界面(GUI)

2023-11-04 00:59

本文主要是介绍PySimpleGUI:使用 Python 轻松制作一个图形界面(GUI),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

一个好看又好用的GUI,可以大大提高大家的使用体验,提高效率。比如你想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没有用户体验的。所以开发一个图形化的小窗口,就变得很有必要。

今天,我就给大家介绍如何只用一行Python代码制作一个GUI,主要使用Python的PySimpleGUI库来完成这个工作。喜欢记得收藏、关注、点赞。

注:完整版代码、资料、技术交流文末获取。

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

详细的接口文档地址如下。

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

示例如下。

图片

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

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

图片

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

▍2、选择文件

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

不同的是,选择文件可以设置multiple_files(是否为多个文件)和file_types(文件类型)参数。

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

▍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按钮,即可返回日期元组结果。

▍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")

结果如下。

图片

▍6、弹窗无标题

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

结果如下。

图片

▍7、弹窗只有OK按钮

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

结果如下。

图片

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

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

结果如下。

图片

▍9、显示通知窗口

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

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

图片

▍10、弹窗选择

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

结果如下。

图片

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

结果如下。

图片

▍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格式文件的路径地址。

图片

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

图片

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

图片

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

好了,今天的分享就到这里了,有兴趣的小伙伴可以自行去学习。

别忘了点赞在看哈~

推荐文章

  • 李宏毅《机器学习》国语课程(2022)来了

  • 有人把吴恩达老师的机器学习和深度学习做成了中文版

  • 上瘾了,最近又给公司撸了一个可视化大屏(附源码)

  • 如此优雅,4款 Python 自动数据分析神器真香啊

  • 梳理半月有余,精心准备了17张知识思维导图,这次要讲清统计学

  • 香的很,整理了20份可视化大屏模板

技术交流

完整代码、数据获取,可以找我来要

目前开通了技术交流群,群友已超过3000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号:dkl88191,备注:来自CSDN
  • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群
    在这里插入图片描述

技术交流、求职内推、干货汇总、与 3000+来自阿里、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

这篇关于PySimpleGUI:使用 Python 轻松制作一个图形界面(GUI)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/342125

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作