Python有很多GUI框架,其中Tkinter、wxPython、Qt和Kivy是几个主流框架。此外,还有很多在上述框架基础上封装的简化框架,如EasyGUI、PyGUI、Pyforms等。但问题是,对于初学者来说,即使是最简单的主流框架也望尘莫及;即使您选择了打包(简化)的框架,仍然很难甚至不可能创建自定义GUI布局。即使你学习了某个(简化的)框架,你也需要写很多代码。PySimpleGUI试图解决上述GUI问题,它提供了一个简单、清晰、易于理解、易于定制的GUI界面。它诞生于2018年,其设计宗旨是“Simplicityistheultimatesophistication”(简单即美丽)。PySimpleGUI包含了大部分原本需要为用户界面构建编写的函数。不仅如此,它还有Auto-packer技术,可以自动创建界面,用户不需要像tkinter那样使用布局管理器。安装和其他模块一样,直接使用pip安装即可:pipinstallPySimpleGUI使用步骤一般使用PySimpleGUI都有固定的套路,我们只要记住这个套路,其实就是使用PySimpleGUI的步骤,以及我们可以很容易地使用PySimpleGUI创建一个GUI。1.importlibrary2.createlayoutUI布局3.window窗口显示4.Eventloop事件循环,用户持续交互5.close关闭窗口下面详细解释这些步骤。importlibraryimportPySimpleGUIassg这是官方推荐的PySimpleGUI写法。Createalayoutlayout这里的layout布局其实就是绘制一些widget,它是由你最终界面的一些元素组成的,比如按钮,复选框,文本框等layout=[[sg.Text('一句话总结Python')],[sg.Input(key='-INPUT-')],[sg.Button('Confirm'),sg.Button('Cancel')]]我们上面的代码包含标签,文本输入框,确认和取消按钮。需要注意的是PySimpleGUI是自动排行的,所以我们需要把对应行的所有组件放到一个列表中,比如“确认”和“取消”按钮放在一个列表中,两个文本组件放在一个列表中,最终形成一个嵌套的列表布局。window窗口显示,定义好layout后,我们只需要在windowwindow里面:window=sg.Window('PySimpleGUIDemo',layout)循环监听事件我们定义了一个窗体,我们需要监听用户在我们的表单界面上的Input操作中的动作被赋予了不同的事件处理。PySimpleGUI给出的解决方案是通过构造一个循环来监听用户输入:whileTrue:event,values=window.read()ifeventin(None,'cancel'):break在这里,检测到None(关闭在右上角)和“取消”按钮事件,退出循环即可。关闭窗口关闭窗口只是一行代码:window.close()完整代码importPySimpleGUIassglayout=[[sg.Text('一句话总结Python')],[sg.Input(key='-INPUT-')],[sg.Button('Confirm'),sg.Button('Cancel')]]window=sg.Window('PySimpleGUIDemo',layout)whileTrue:event,values=window.read()print(event)print(values)ifeventin(None,'Cancel'):breakwindow.close()这里我把监听到的事件和获取到的值打印到控制台。运行效果截图:当我输入文字点击“确定”按钮时,控制台会打印如下内容:确认{'-INPUT-':'Lifeisshort,IlovePython'}将值传给PySimpleGUI的传递值的方式不同与其他GUI一样,它被相同的关键字绑定。importPySimpleGUIassglayout=[[sg.Text('一句话总结Python')],[sg.Input(key='-INPUT111-')],[sg.Input(key='-INPUT222-')],[sg.Button('确认'),sg.Button('取消')],[sg.Text('输出:'),sg.Text(key='-OUTPUT-')]]window=sg.Window('PySimpleGUIDemo',layout)whileTrue:event,values=window.read()print(event)print(values)ifeventin(None,'Cancel'):breakelse:window['-OUTPUT-'].update(values['-INPUT222-'])window.close()让我们再次扩展上面的例子。我的界面上有两个输入框,然后在最下面有一个输出线,用来显示输入框的输入内容。运行后界面如下:当我在两个输入框输入内容时,底部只会显示第二个输入框的内容,因为我设置了第二个输入框的key('-INPUT222-')绑定在下面的输出行中。切换主题PySimpleGUI提供了很多其他的主题供我们选择:可以通过以下代码查看主题:sg.preview_all_look_and_feel_themes()切换主题的方式是:sg.change_look_and_feel("GreenMono")总结本文介绍了一个非常简单的一款实用的GUI神器,无需一堆代码即可打造简单的GUI。对初学者非常友好,也是快速生成GUI界面的最佳选择。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能领取大量学习资料。或者去编程学习网了解更多编程技术知识。
