【Python】Python图形化界面库PySimpleGUI的简单使用
1.说明
能实现Python的图形化界面的库挺多的,比较出名的可能是tkinter、PyQt等,但它们都不够快速,PySimpleGUI就是一个可以让我们快速创建图形界面的库,它整合了 tkinter、Qt、WxPython 和 Remi等库,让我们使用简单代码就能创建出不错的界面
在使用之前,可以先安装一下
pip install pysimplegui
2.主窗口
import PySimpleGUI as sg# 设置主题
# sg.theme('DarkAmber')# 界面布局
layout = [[sg.Text('个人信息')],[sg.Text('姓名'), sg.InputText()],[sg.Text('年龄'), sg.InputText(key="input_age")],[sg.Button('提交'), sg.Button('取消')]
]# 设置主窗口
window = sg.Window('填写信息', layout)# 事件循环,监听事件的事件名和对应的值
while True:event, values = window.read()if event == sg.WIN_CLOSED:breakelif event == "提交":print(event) # 提交print(values) # {0: 'pan', 'input_age': '18'}elif event == "取消":break# 关闭窗口
window.close()
首先要实例化一个Window对象,表示一个界面窗口,但它的构造方法里有几十个参数,我们只指定前两个,分别是窗口标题和窗口布局,布局是一个列表,列表里是各种窗口控件,有了Window对象之后要使用死循环不断调用read()方法,主要作用是监听各种事件,我们通过事件名判断要执行上面代码,如果是关闭窗口则事件名是None,这时候跳出死循环之后调用Window对象的close()方法释放资源,然后程序正常结束就行
3.布局
Window对象的第二个参数是布局,布局要传入一个列表,列表里可以嵌套列表,每一个列表里的元素都会在同一行显示,换句话说,如果想要不同行,那就把它们放在不同的列表里
layout = [# 第一行[sg.Text('个人信息')],# 第二行[sg.Text('姓名'), sg.InputText()],# 第三行[sg.Text('年龄'), sg.InputText(key="input_age")],# 第四行[sg.Button('提交'), sg.Button('取消')]
]
4.文本控件(文本控件)
一个图形界面里有各种控件,比如说文本、输入框、按钮、选择框等,但它们很多属性都是共有的,因为它们都继承与Element对象,此处先以Text为例看一下。Text对象主要用于显示文本,Text对象构造方法的参数很多,但常用的不多
sg.Text(text='个人信息', # 文本size=(10, 2), # 字体大小font=("黑体", 100), # 字体及字号text_color="#aa99ff", # 字体颜色background_color="gray", # 背景颜色enable_events=True, # 允许开启实际,默认是Falseauto_size_text=False, # 是否根据文本大小自动调整窗口大小key="txtInfo", # 指定key
)
5.更新控件
想要更新控件,第一件事就是拿到控件,我们把各种控件通过layout与Window绑定在一起,所以也可以通过中括号的方式取出控件,然后修改控件的属性,但要调用Element对象提供的update()方法才能把修改后的效果更新到界面上。Text是继承Element的,所以它自然也有update()方法
import PySimpleGUI as sglayout = [[sg.Text(text='原始信息', key="txtInfo", )],[sg.Button('修改'), sg.Button('取消')]
]window = sg.Window('Demo', layout, size=(500, 200))while True:event, values = window.read()if event == sg.WIN_CLOSED:breakelif event == "修改":window["txtInfo"].update(value="修改之后的信息",text_color="red",font=("黑体", 20))elif event == "取消":breakwindow.close()
6.输入框
输入框也是继承Element对象的,所以key、字体、背景等设置在Text控件那里已经演示了,这里只给Input对象常用的属性
sg.InputText(default_text="请输入你的名字", # 默认文本disabled=False, # 是否禁止输入password_char="*", # 如果设置了密码字符,那输入的文本就会被替换justification="left", # 文本对齐方式,left, right, center
)
7.文件选择框
文件选择框有好几种,比如说选择单个文件、选择多个文件、选择文件夹、另存为等,但它们只是对象名不同而已,参数用法都是一样的,所以掌握一个就行了
import PySimpleGUI as sglayout = [[sg.FileBrowse(button_text="请选择单个文件", # 按钮文本target="single_path", # 把选择后的路径保存到key为input_path的对象# file_types=(("All Files", "*.*"),), # 默认筛选全部文件类型file_types=(("All Files", "*.png"),), # 筛选png类型initial_folder=r"C:\Users\admin\Downloads",),sg.InputText(key="single_path"),],[sg.FilesBrowse(button_text="请选择多个文件",initial_folder=r"C:\Users\admin\Downloads",target="multy_path"),sg.InputText(key="multy_path")],[sg.FolderBrowse(button_text="请选择文件夹",initial_folder=r"C:\Users\admin\Downloads",target="folder_path"),sg.InputText(key="folder_path")],[sg.SaveAs(button_text="另存为",initial_folder=r"C:\Users\admin\Downloads",target="save_as_path"),sg.InputText(key="save_as_path")],
]window = sg.Window('Demo', layout, size=(500, 200))while True:event, values = window.read()if event == sg.WIN_CLOSED:breakwindow.close()
8.设置主题
pysimplegui自带了很多主题,你可以使用预览和查看主题名
import PySimpleGUI as sg# 预览全部主题
sg.theme_previewer()
# 查看主题名
print(sg.theme_list())
# 设置指定主题
sg.theme("主题名称")
# 设置一个随机主题
sg.theme("")
9.打包程序
如果你已经做好了一个漂亮的程序,那肯定少不了打开成EXE文件,这样就可以在没有安装Python的环境下运行程序了。把Python代码打包为可执行程序的方式很多,比如说pyinstaller、py2exe、nuitka等,但既然是使用PysimpleGUI做的,肯定使用对应的打包工具更方便点,这个库是pysimplegui-exemaker,需要安装一下
pip install pysimplegui-exemaker
安装好之后再终端或者命令行窗口打开它
python -m pysimplegui-exemaker.pysimplegui-exemaker
这样我们就可以使用窗口点击需要打开的程序进行打包了
其实pysimplegui-exemaker本质上也是调用一下PyInstaller,所以你当然也可以直接在命令行执行打包命令
pip install PyInstaller
pyinstaller -wF my_program.py
以上代码都是在主线程执行的,如果主线程遇到耗时任务则UI界面就会卡住或者假死,解决方法就是改为多线程,可以参考
【Python】pysimplegui主动事件(多线程执行耗时任务解决主线程卡死问题)
【Python】Python图形化界面库PySimpleGUI的简单使用相关推荐
- Golang GUI编程-图形化界面库简介
Fyne是一个开源的Golang图形化界面库,通过它可以便捷的为桌面/移动及其它设备建立图形化应用.结合了Golang的强大和简洁,Fyne提供了一整套的组件库,通过它我们可以更方便的进行全平台开发并 ...
- Python + Tkinter 图形化界面设计1 —— 第一个图形化界面
图形化界面设计的基本理解 Python自带了tkinter 模块,实质上是一种流行的面向对象的GUI工具包 TK 的Python编程接口,提供了快速便利地创建GUI应用程序的方法.其图像化编程的基本步 ...
- python——Tkinter图形化界面及threading多线程
Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macinto ...
- python编写图形化界面的工具,python做出软件的界面
python能写界面吗 作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,我认识的并不多,这里只列出几 ...
- php图形界面框架,python GUI 图形化界面框架的选择
根据网上资料的显示目前流行的开源python GUI有以下几个 (以下GUI框架适用于应用的GUI,如果采用WEB方式,UI可使用h5相关标签即可,也可以用框架.): PyQt 的介绍 : http: ...
- 学生管理系统-Python tkinter图形化界面+sqlserver+柱状图
参考了大佬的,把mysql数据库改成了sqlserver 附上大佬的代码链接 https://blog.csdn.net/qq_45811949/article/details/106065845?o ...
- 数据库课程设计 python+mysql+图形化界面
进行操作的表 增加界面 import tkinter as tk import pymysqldef frame():global rootroot = tk.Tk()root.title('录入窗口 ...
- python制作图形化界面_python图形化界面设计(wxpython)一布局管理
本篇内容来自https://www.cnblogs.com/-wenli/p/12149850.html 1.布局分析和注意点 例程主要是Sizer布局应用.wx.BoxSizer的布局方向分为横向和 ...
- 现今主流计算机语言,现今主流的Python图形化界面主要有哪些
现今主流的Python图形化界面主要有哪些 发布时间:2020-10-23 20:08:59 来源:亿速云 阅读:114 作者:小新 这篇文章将为大家详细讲解有关现今主流的Python图形化界面主要有 ...
最新文章
- 100法拉电容生猛无线充电背后原因
- html选择器_HTML的id选择器类选择器
- nginx进阶-动静分离,负载均衡
- win10安装jdk1.8
- python io流,Python io流会在列表理解中自动关闭吗?
- C语言获取链表的中间值Middle of the Linked List(附完整源码)
- 合并K个有序数组(链表)【字节跳动面试算法题】
- 工厂方法(FactoryMethod)模式
- 在SQL server中查找特定类别的列
- 高通android刷机工具,高通android7.0刷机工具使用介绍
- 较低成本的ISO7637-2 5A 5B抛负载保护方案
- FontAwesome 字体图标库 使用
- paypal沙盒用户_如何使用PayPal实施用户登录
- 报错:Internal error XFS_WANT_CORRUPTED_GOTO at line 1635 of file fs/xfs/libxfs/xfs_alloc.c.
- 126邮箱stmp服务器,网易邮箱设置海外服务器 打造海外邮件快车道
- Cloudera(CDH) 简介和在线安装
- 复制计算机软件,一键复制粘贴工具
- C语言 计算BMI值,建议体重
- 进化优化算法--第二章:爬山法
- 计算服务——弹性云服务器
热门文章
- Java修炼之凡界篇 筑基期 第02卷 语法 第04话 类型转换
- Revit创建装饰纹路柱及CAD生成柱
- Java to Android
- 北京大学信科2017机试真题之水淹七军
- 米家扫地机器人沒有系统重置键_小米扫地机重置系统的作用?小米扫地机器人按键布局及功能介绍...
- PyCharm使用教程(较详细,图+文)
- pycharm使用-venv环境创建
- 2014年,趁着互联网金融P2P网贷未被监管,赚点小钱吧~
- Could not verify ssh-ed25519 host key with fingerprint 问题解决
- 资源 | Python中文分词工具大合集