python gui库 知乎_python库介绍-PySimpleGUI-简单的GUI开发工具

创建图形用户界面(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的外观:

图片.png

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

Event: OK

{0: 'mike'}

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

图片.png

PySimpleGUI 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工具包的文档中看不到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值