当前位置: 首页 > 科技观察

沟Tkinter!几行代码快速生成漂亮的GUI!

时间:2023-03-16 21:31:54 科技观察

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关闭窗口下面详细解释这些步骤。导入库importPySimpleGUIassg是官方推荐的PySimpleGUI写法。Createalayoutlayout这里的layout布局其实就是绘制一些widgets,这些widgets是由你最终界面的一些元素组成的,比如按钮,复选框,文本框等layout=[[sg.Text('Python总结一句话')],[sg.Input(key='-INPUT-')],[sg.Button('Confirm'),sg.Button('Cancel')]]我们上面的代码包含标签,文本输入框、确认和取消按钮。需要注意的是PySimpleGUI是自动排行的,所以我们需要把对应行的所有组件放到一个列表中,比如“确认”和“取消”按钮放在一个列表中,两个文本组件放在一个列表中,最终形成一个嵌套的列表布局。window窗口展示,定义好layout后,我们只需要在windowwindow里面:window=sg.Window('PySimpleGUIDemo',layout)循环监听事件我们定义了一个窗体,我们需要监听用户的actions在我们的windowbody界面上输入操作,给予不同的事件处理。PySimpleGUI给出的解决方案是通过构造一个循环来监听用户输入:whileTrue:event,values=window。"按钮事件,退出循环。关闭窗口关闭窗口只是一行代码: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界面的最佳选择。

猜你喜欢