PySimpleGUI:基于Python的跨平台图形界面开发指南

南乔
南乔
发布时间:2026-10-11| 4人浏览过
原创

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 的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。