python库介绍-PySimpleGUI-简单的GUI开发工具

简介: 创建图形用户界面(GUI graphical user interface) 可能很困难。有许多不同的Python GUI工具包可供选择。 比如Tkinter,wxPython和PyQt(或PySide2) 。

创建图形用户界面(GUI graphical user interface) 可能很困难。有许多不同的Python GUI工具包可供选择。 比如Tkinter,wxPython和PyQt(或PySide2) 。但实际上PySimpleGUI创建GUI更加容易。

PySimpleGUI基于Tkinter,Remi、wxPython和PyQt。Remi将应用程序的界面转换为HTML以在Web浏览器中呈现”。

PySimpleGUI不需要使用类来创建用户界面。

Hello PySimpleGUI

在使用GUI时,总是很容易了解如何将自己组合在一起。让我们编写一个包含字符串和两个按钮的小表格:“确定”按钮和“取消”按钮

# -*- coding: utf-8 -*-
import PySimpleGUI as sg
 
# Create some widgets
text = sg.Text("What's your name?")
text_entry = sg.InputText()
ok_btn = sg.Button('OK')
cancel_btn = sg.Button('Cancel')
layout = [[text, text_entry],
          [ok_btn, cancel_btn]]
 
# Create the Window
window = sg.Window('Hello PySimpleGUI', layout)
 
# Create the event loop
while True:
    event, values = window.read()
    if event in (None, 'Cancel'):
        # User closed the Window or hit the Cancel button
        break
    print(f'Event: {event}')
    print(str(values))
 
window.close()

在这里导入PySimpleGUI,然后创建一系列小部件:Text,InputText和两个Button。要按行布局小部件,可以将它们添加到列表中。因此,对于小部件的第一行,您将创建一个包含Text小部件和InputText小部件的列表。这些小部件是从左到右水平添加的。要添加第二行,请添加第二个小部件列表,其中包含两个按钮。

将所有小部件放在一组嵌套列表中后,即可创建窗口。这是包含所有其他小部件的父小部件。它具有标题,并接受您的小部件嵌套列表。

最后,您创建一个while循环,并调用Window的 read()方法以提取用户设置的事件和值。如果用户按下“取消”按钮或关闭“窗口”,则您会发现并退出循环。否则,您将输出事件和用户输入的任何值。

这是您运行代码时GUI的外观:

image

在文本输入小部件中输入字符串“ mike”,然后点击“确定”按钮。您应该在终端中看到以下输出:

Event: OK
{0: 'mike'}

但是,如果您可以将stdout重定向到GUI中的调试窗口,那会不会很好? PySimpleGUI实际上有一个简单的方法可以做到这一点。您需要做的就是将上面代码中的打印语句更新为以下内容:

image

PySimpleGUI Widget

文档 https://pysimplegui.readthedocs.io/en/latest/#element-and-function-call-reference。注意Table Widget暂时还有些问题。

如果PySimpleGUI背后的开发人员可以包装wxPython的小部件或Qt,因为它们都具有健壮的表和树小部件,那么这样做应该会更好。

多个窗口

我看到许多新程序员都在挣扎的一件事是在他们选择的GUI工具包中打开多个窗口。 幸运的是,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()

小结

PySimpleGUI是一个简洁的库,我喜欢它比wxPython和PyQt趋向于变得更“ Pythonic”。当然,如果您寻找一种使用Python方法而不是C ++方法的GUI,则可能需要查看Toga或Kivy。

无论如何,我认为PySimpleGUI看起来具有很多有趣的功能。小部件集开箱即用,但是当它们包装其他工具箱时,这将不再是问题。坦白说,他们在Github上有很多很棒的演示应用程序,还有项目本身的演示应用程序。他们还提供了有关使用PyInstaller将您的应用程序转换为Windows和Mac上的可执行文件的信息,这通常是您在GUI工具包的文档中看不到的。

相关文章
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
28 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
104 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
72 20
|
2月前
|
机器学习/深度学习 人工智能 数据处理
[python 技巧] 快速掌握Streamlit: python快速原型开发工具
本文旨在快速上手python的streamlit库,包括安装,输入数据,绘制图表,基础控件,进度条,免费部署。
382 64
[python 技巧] 快速掌握Streamlit: python快速原型开发工具
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
185 77
|
2月前
|
XML JSON 数据库
Python的标准库
Python的标准库
71 11
|
2月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
103 8
|
2月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
87 4
|
3月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
226 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
3月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
197 4
数据分析的 10 个最佳 Python 库

热门文章

最新文章

推荐镜像

更多