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的简单使用相关推荐

  1. Golang GUI编程-图形化界面库简介

    Fyne是一个开源的Golang图形化界面库,通过它可以便捷的为桌面/移动及其它设备建立图形化应用.结合了Golang的强大和简洁,Fyne提供了一整套的组件库,通过它我们可以更方便的进行全平台开发并 ...

  2. Python + Tkinter 图形化界面设计1 —— 第一个图形化界面

    图形化界面设计的基本理解 Python自带了tkinter 模块,实质上是一种流行的面向对象的GUI工具包 TK 的Python编程接口,提供了快速便利地创建GUI应用程序的方法.其图像化编程的基本步 ...

  3. python——Tkinter图形化界面及threading多线程

    Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macinto ...

  4. python编写图形化界面的工具,python做出软件的界面

    python能写界面吗 作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,我认识的并不多,这里只列出几 ...

  5. php图形界面框架,python GUI 图形化界面框架的选择

    根据网上资料的显示目前流行的开源python GUI有以下几个 (以下GUI框架适用于应用的GUI,如果采用WEB方式,UI可使用h5相关标签即可,也可以用框架.): PyQt 的介绍 : http: ...

  6. 学生管理系统-Python tkinter图形化界面+sqlserver+柱状图

    参考了大佬的,把mysql数据库改成了sqlserver 附上大佬的代码链接 https://blog.csdn.net/qq_45811949/article/details/106065845?o ...

  7. 数据库课程设计 python+mysql+图形化界面

    进行操作的表 增加界面 import tkinter as tk import pymysqldef frame():global rootroot = tk.Tk()root.title('录入窗口 ...

  8. python制作图形化界面_python图形化界面设计(wxpython)一布局管理

    本篇内容来自https://www.cnblogs.com/-wenli/p/12149850.html 1.布局分析和注意点 例程主要是Sizer布局应用.wx.BoxSizer的布局方向分为横向和 ...

  9. 现今主流计算机语言,现今主流的Python图形化界面主要有哪些

    现今主流的Python图形化界面主要有哪些 发布时间:2020-10-23 20:08:59 来源:亿速云 阅读:114 作者:小新 这篇文章将为大家详细讲解有关现今主流的Python图形化界面主要有 ...

最新文章

  1. 100法拉电容生猛无线充电背后原因
  2. html选择器_HTML的id选择器类选择器
  3. nginx进阶-动静分离,负载均衡
  4. win10安装jdk1.8
  5. python io流,Python io流会在列表理解中自动关闭吗?
  6. C语言获取链表的中间值Middle of the Linked List(附完整源码)
  7. 合并K个有序数组(链表)【字节跳动面试算法题】
  8. 工厂方法(FactoryMethod)模式
  9. 在SQL server中查找特定类别的列
  10. 高通android刷机工具,高通android7.0刷机工具使用介绍
  11. 较低成本的ISO7637-2 5A 5B抛负载保护方案
  12. FontAwesome 字体图标库 使用
  13. paypal沙盒用户_如何使用PayPal实施用户登录
  14. 报错:Internal error XFS_WANT_CORRUPTED_GOTO at line 1635 of file fs/xfs/libxfs/xfs_alloc.c.
  15. 126邮箱stmp服务器,网易邮箱设置海外服务器 打造海外邮件快车道
  16. Cloudera(CDH) 简介和在线安装
  17. 复制计算机软件,一键复制粘贴工具
  18. C语言 计算BMI值,建议体重
  19. 进化优化算法--第二章:爬山法
  20. 计算服务——弹性云服务器

热门文章

  1. Java修炼之凡界篇 筑基期 第02卷 语法 第04话 类型转换
  2. Revit创建装饰纹路柱及CAD生成柱
  3. Java to Android
  4. 北京大学信科2017机试真题之水淹七军
  5. 米家扫地机器人沒有系统重置键_小米扫地机重置系统的作用?小米扫地机器人按键布局及功能介绍...
  6. PyCharm使用教程(较详细,图+文)
  7. pycharm使用-venv环境创建
  8. 2014年,趁着互联网金融P2P网贷未被监管,赚点小钱吧~
  9. Could not verify ssh-ed25519 host key with fingerprint 问题解决
  10. 资源 | Python中文分词工具大合集