PySimpleGUI:基于Python的跨平台图形界面开发指南
PySimpleGUI是一个封装了tkinter、Qt、wxPython和Remi的Python图形界面库,支持5.1K GitHub Star。本文介绍其核心架构、内置主题及跨浏览器部署能力,并提供单窗口与多窗口设计的完整代码示例,帮助开发者快速构建桌面应用。
PySimpleGUI 核心特性与架构
PySimpleGUI 旨在简化 Python 图形界面开发,其核心优势在于对多种底层 GUI 框架的统一封装。开发者无需深入处理底层细节,即可利用其提供的 API 构建应用。该库内部封装了以下主流框架:
- tkinter:Python 标准库自带的 GUI 工具包。
- Qt (pyside2):功能强大的跨平台图形界面框架。
- wxPython:基于 wxWidgets 的 Python 绑定。
- Remi:用于将应用部署到浏览器环境的支持库。
通过这种封装机制,开发者可以使用同一套代码逻辑,根据需求切换底层渲染引擎。例如,利用 Remi 支持,无需修改核心业务代码即可将界面部署到 Web 浏览器中。此外,该库提供了 100 多种内置颜色主题,并包含 200 多个示例程序,支持 Raspberry Pi 等嵌入式设备,极大降低了 UI 开发的门槛。

单窗口应用基础实现
一个标准的 PySimpleGUI 程序通常包含五个核心部分:导入库、定义布局、创建窗口、开启事件循环以及关闭窗口。以下代码演示了如何构建一个包含文本提示、输入框和按钮的基础窗口。
import PySimpleGUI as sg # Part 1 - 导入库
# 定义窗口的内容
layout = [ [sg.Text("What's your name?"), # Part 2 - 排版
[sg.Input()],
[sg.Button('Ok')] ]
# 创建窗口
window = sg.Window('Window Title', layout) # Part 3 - 窗口定义
# Display and interact with the Window
event, values = window.read() # Part 4 - 开启主循环 window.read()
# Do something with the information gathered
print('Hello', values[0], "! Thanks for trying PySimpleGUI")
# Finish up by removing from the screen
window.close() # Part 5 - 关闭窗口在上述代码中,layout 列表定义了界面的控件排列方式,sg.Window 负责实例化窗口,而 window.read() 则是核心事件循环,用于捕获用户交互(如点击按钮或输入文本)。程序执行完毕后,必须调用 window.close() 以释放系统资源。

多窗口设计与状态管理
对于需要同时管理多个活动窗口的应用,PySimpleGUI 提供了两种不同的多窗口设计模式。以下示例展示了如何通过事件循环控制主窗口与子窗口的生命周期,实现“打开第二个窗口”的功能。
# -*- coding: utf-8 -*-
# https://www.jianshu.com/u/69f40328d4f0
# https://github.com/china-testing/python-api-tesing
# https://china-testing.github.io/
# support q group: 630011153 144081101
import PySimpleGUI as sg
# Create some widgets
ok_btn = sg.Button('Open Second Window')
cancel_btn = sg.Button('Cancel')
layout = [[ok_btn, cancel_btn]]
# Create the first Window
window = sg.Window('Window 1', layout)
win2_active = False
# Create the event loop
while True:
event1, values1 = window.read(timeout=100)
if event1 in (None, 'Cancel'):
# User closed the Window or hit the Cancel button
break
if not win2_active and event1 == 'Open Second Window':
win2_active = True
layout2 = [[sg.Text('Window 2')],
[sg.Button('Exit')]]
window2 = sg.Window('Window 2', layout2)
if win2_active:
events2, values2 = window2.Read(timeout=100)
if events2 is None or events2 == 'Exit':
win2_active = False
window2.close()
window.close()该实现的关键在于状态变量 win2_active 的管理。主循环通过 window.read(timeout=100) 定期检查事件,当检测到“Open Second Window”按钮被点击且子窗口未激活时,创建并显示子窗口。子窗口的关闭事件(如点击“Exit”或关闭按钮)会将 win2_active 重置为 False,并关闭子窗口实例,从而保持主窗口的正常运行。
总结
PySimpleGUI 通过封装多种底层 GUI 框架,为 Python 开发者提供了高效、跨平台的图形界面开发方案。无论是简单的单窗口应用还是复杂的多窗口交互,其简洁的 API 和内置主题都能显著降低开发成本。以上就是 PySimpleGUI Python 图形界面库使用教程与多窗口示例的详细内容,更多关于 Python GUI 开发、跨平台应用及 PySimpleGUI 的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









