1 Python自学 - 站在GUI编程门前(请先捡个装备-EasyGUI)
如果读者要开发工具,并且除了给自己用,还想分享给其他人,那很请记住如下的宗旨:
一个好的工具,除了需要给用户带来功能,还需要给用户带来便利!
这是一个工具的道德底线,如果读者将来开发的工具,各项功能牛逼轰轰,但是排版混乱,操作复杂,极其难用,很快就会失去生命力!如果这些功能是必须品,那很快就会有受不了的好事者开发出更好用的替代品!
不管这个工具面向的范围是部门团队、公司同事,还是全网用户,请记住一定要在保证功能正确的前提下,尽可能的让用户可以高效和方便的使用!
名词解释:
GUI
: 读作“噜依”, 是Graphical User Interface
的首字母编写,即,图形用户界面。
1.1 为什么GUI很重要
相对于命令行工具,图形工具的受众会要广泛得多,这里面有各行种业的人,有些人对电脑知识堪堪入门,命令怎么输入都不懂,只会用鼠标点点点,有些是电脑高手,自己有丰富的编程经验。哪怕是电脑高手,如果有图形界面程序,多数人也会优先选择。因此,提供图形界面,可以让你的工具帮助到更多的人!创造更大的社会价值!
1.2 在Python下的GUI编程资源
1.2.1 比较流行的GUI库
Python下可用的GUI库有很多,常用的比较中大型的GUI库有如下几种:
-
Tkinter
Tkinter 是Python
的标准GUI
库,它是 Tk 图形用户界面工具包的 Python接口。Tkinter
提供了创建窗口
、按钮
、标签
、文本框
等各种GUI
组件的功能。
优点:Python的自带的标准GUI库,用户不需要单独安装,基本功能成熟稳定,没有商用风险!
缺点:巨丑!设计窗口也极不方便,要么用户自己用代码排版窗口,网上在在线设计器,但存在使用成本,以及修改界面后,又会涉及本地代码的同步修改,远没有传统的RAD开发工具方便! -
PyQt
PyQt 是Python
的一个GUI
库,它是Qt
库的Python
绑定。Qt
是一个功能强大的跨平台 C++ GUI 框架,PyQt
继承了Qt
的强大功能,提供了丰富的GUI
组件和工具,支持高级的界面设计和交互功能,适用于开发大型、功能复杂的GUI
应用程序,并且具有良好的跨平台性。
优点:功能极其强大!是开发大型项目的首选!
缺点:商用需要授权 -
wxPython
wxPython
是 Python 的一个 GUI 库,它是wxWidgets
库的Python
绑定。wxWidgets
是一个跨平台的C++ GUI
库,wxPython 提供了丰富的 GUI 组件和功能,具有良好的跨平台兼容性,能够在Windows、Mac、Linux
等多个平台上运行,适用于开发各种类型的 GUI 应用程序,尤其是需要与本地系统进行深度集成的应用。
优点:开源免费,老牌GUI库,界面库很强大!
缺点:界面设计软件相对弱点,众多开源的半成品中wxFormBuilder
可用性相对较好。
注:wxFormBuilder
本文作者贡献过几行代码,主要涉及易用性
及效率
(1,属性编辑面板可记住上次编辑的属性,提高修改多个控件相同属性的效率;2,属性编辑面板和窗口设计器位置交换,可缩短鼠标行程,提高操作效率)。 -
Kivy
Kivy
是一个开源的Python
库,用于开发跨平台的触摸式应用程序,特别适用于开发移动应用和多媒体应用。Kivy
具有强大的图形渲染能力和触摸事件处理功能,支持多种手势识别,能够创建出流畅、美观的用户界面,并且可以在 Windows、Mac、Linux、Android、iOS 等多个平台上运行。
读者可以自行阅读官方文档。 -
PySimpleGUI
PySimpleGUI
是一个简单易用的Python GUI
库,它的设计目标是让用户能够快速、轻松地创建 GUI 应用程序,而无需深入了解复杂的 GUI 框架。PySimpleGUI
提供了简洁的 API,隐藏了底层 GUI 库的复杂性,适用于快速原型开发和简单的 GUI 应用场景。 -
EasyGUI
EasyGUI
是Tkinter
的一个封装,该库提供了一些常用的提示对话框
、确定对话框
、输入对话框
、选项对话框
、文件对话框
、目录选择框
等。外观虽然算不上精美(源自Tkinter
),但对于很大一部分打开后只需要用户输入简单信息的工具,时间成本是几十倍的降低。使用这些对话框,完全不需要用户去布局界面元素!
1.3 几个EasyGUI小示例
提示:安装easygui
可以使用命令pip install easygui
.
1.3.1 弹出提示框
import easygui
easygui.msgbox("这是一个消息框", "EasyGUI介绍")
效果:
说明:是不是很丑?但是用着很方便,其他GUI库都要写大量的界面布局代码,这个直接就能用!
1.3.2 输出输入框
import easygui
name = easygui.enterbox("请输入你的名字", "输入框")
print(f"你输入的名字是: {name}") #当然,可以是其他业务代码
效果:
1.3.3 多数据输入
from easygui import *
msg = "Enter your personal information"
title = "Credit Card Application"
fieldNames = ["Name","Street Address","City","State","ZipCode"]
fieldValues = [] # we start with blanks for the values
fieldValues = multenterbox(msg,title, fieldNames)
# make sure that none of the fields was left blank
while 1:
if fieldValues == None: break
errmsg = ""
for i in range(len(fieldNames)):
if fieldValues[i].strip() == "":
errmsg = errmsg + ('"%s" is a required field.\n\n' % fieldNames[i])
if errmsg == "": break # no problems found
fieldValues = multenterbox(errmsg, title, fieldNames, fieldValues)
print("Reply was:", fieldValues)
注:这里输入项的多少可以自己设置,fieldNames
定义了多少项数据
效果
更多的对话框,请阅读官方文档:EasyGUI官网
1.3.4 总结
EasyGUI
应该是所有Python GUI库里使用代价最小的库了,它不需要一行界面布局代码,同时又能解决大部分的界面交互需求!是开发小工具的非常好的选择!我对它的评价:很丑但是很温柔!
作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来源自豆包AI,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.