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

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下