尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python生态GUI框架:Tkinter、Kivy、DearPyGui、wxPython、Qt、PyQt、PySide、PyMe、PythonCard

Python生态GUI框架:Tkinter、Kivy、DearPyGui、wxPython、Qt、PyQt、PySide、PyMe、PythonCard 概述本文汇总Python生态体系下GUI开发框架和工具并提供入门案例注没有深度实践。工具特点适合场景学习难度TkinterPython内置简单文档全简单工具、教学、快速原型⭐☆☆☆☆PyQt/PySide功能强大跨平台商业化友好专业桌面应用、需要丰富UI组件⭐⭐⭐⭐☆wxPython原生外观轻量级需要系统原生样式的应用⭐⭐⭐☆☆Kivy移动端友好支持多点触控跨平台移动应用、触摸屏应用⭐⭐⭐☆☆DearPyGui现代游戏风格性能好需要现代UI和实时数据的应用⭐⭐☆☆☆Tkinter作为Python标准库自带无需额外安装简单易用但界面较为老旧官方文档文档1。几个概念Tcl一种动态解释型编程语言可作为一种通用编程语言单独使用但最常见用法还是作为脚本引擎或Tk工具包接口嵌入到C程序中。Tcl库有一个C接口用于创建和管理一个或多个Tcl解释器实例并在这些实例中运行Tcl命令和脚本添加用Tcl或C实现的自定义命令。每个解释器都拥有一个事件队列某些部件可向解释器发送事件交由其处理。与Python不同Tcl的执行模型是围绕协同多任务而设计的Tkinter协调两者差别。Tk用C实现的Tcl包添加用于创建和操纵GUI部件的自定义命令。每个Tk对象都嵌入自己的Tcl解释器实例并将Tk加载到其中。Tk的部件是高度可定制但其代价则是过时的外观。Tk使用Tcl的事件队列来生成并处理GUI事件。Ttk带主题的Tk部件在各平台提供更美观界面。自Tk8.5版本开始作为Tk的成员进行发布。Python引入from tkinter import ttk编程概念控件Tkinter用户界面是由控件组成每个控件都由相应Python对象表示使用诸如ttk.Frame类来实例化控件层级结构控件按层级结构来组织。标签和按钮包含在框架中框架又包含在根窗口中。当创建子控件时其父控件会作为控件构造器的第一个参数被传入配置选项控件具有配置选项用于改变控件外观和行为不同控件类有不同选项集几何管理grid小部件在创建时不会自动添加到用户界面用于控制部件位置事件循环只有主动运行一个事件循环Tkinter才会对用户输入做出反应。Tk接口针对Tcl/Tk GUI工具包的标准Python接口示例importtkinterastkclassApp(tk.Frame):def__init__(self,master):super().__init__(master)self.pack()self.entrythingytk.Entry()self.entrythingy.pack()# 创建应用程序变量self.contentstk.StringVar()# 赋值self.contents.set(this is a variable)# 使输入控件监视此变量self.entrythingy[textvariable]self.contents# 按下回车时绑定回调函数print_contentsself.entrythingy.bind(Key-Return,self.print_contents)defprint_contents(self,event):print(Hi. The current entry content is:,self.contents.get())roottk.Tk()myappApp(root)myapp.mainloop()效果如下问题不能自适应调整输入文本框长度。Tkinter-Designer开源GitHub10.1K Star938 ForkGUI设计器。Vb6Tkinter开源GitHub576 Star143 Fork基于VB6设计Tkinter GUI界面。Kivy官网开源GitHub18.8K Star3.2K Fork跨平台Python GUI框架官方文档中文文档PyPI项目主页。核心模块kivy.core提供各种常用功能Clock时钟类可用于计时器事件支持一次性计时和周期性计时Cache缓存类Gesture Detection手势识别可用来识别各种滑动行为如画个圆圈、方块Kivy LanguageKivy语言用于简洁高效地描述Kivy应用的UIProperties和Python中的属性不同通过UI描述来连接控件代码实战安装pip install kivy示例fromkivy.appimportAppfromkivy.uix.gridlayoutimportGridLayoutfromkivy.uix.labelimportLabelfromkivy.uix.textinputimportTextInputclassLoginScreen(GridLayout):def__init__(self,**kwargs):super(LoginScreen,self).__init__(**kwargs)self.cols2self.add_widget(Label(textusername))self.usernameTextInput(multilineFalse)self.add_widget(self.username)self.add_widget(Label(textpassword))self.passwordTextInput(passwordTrue,multilineFalse)self.add_widget(self.password)classMyApp(App):defbuild(self):returnLoginScreen()if__name____main__:MyApp().run()运行效果Android针对Android平台的开源GitHub8.8K Star2K Fork官方文档。DearPyGui开源GitHub15K Star760 Fork官方文档PyPI项目主页。实战安装pip install dearpygui示例fromdearpyguiimportcore,simpledefsave_callback(sender,data):print(Save Clicked)withsimple.window(Example Window):core.add_text(Hello world)core.add_button(Save,callbacksave_callback)core.add_input_text(string)core.add_slider_float(float)core.start_dearpygui()运行官方demo包fromdearpygui.demoimport*show_demo()start_dearpygui()wxPython官网PyPI项目主页跨平台性好英文文档1中文文档。由五个基本模块组成Controls提供图形应用程序中常见Widgets如Button、Toolbar或Notebook。Widgets在Windows上叫做ControlsCore由开发的基本中用到的基本类组成包括Object类它是所有类的基类Sizers用于Widget布局Events像Point和Rectangle这样的基本几何类GDIGraphics Device Interface图形设备接口用于绘制Widgets的一组类Misc包含各种其他类和模块功能用于记录日志应用程序配置系统设置显示或操纵杆Windows由形成应用程序的各种窗口组成如面板Panel对话框Dialog框架Frame或滚动窗口Scrolled Window。安装pip install wxPython示例QtQt Group官网中文官网官方文档中文文档在线体验。经过多年发展已经成为一个庞大生态Qt FrameworkQt开发框架下面单独介绍QT Creator开源GitHub2.9K Star851 Fork跨平台IDE专为最大限度提高开发者效率而定制集成GitHub Copilot等编码助手可用于桌面、移动端和嵌入式平台设计。需付费使用。设计工具Qt Design Studio通过弥合设计师与开发者之间的鸿沟将设计愿景转化为可运行的UI变革开发流程。Figma To Qt实现Figma设计到终端产品的极速转化以插件形式工作。软件质量Squish跨平台GUI自动化测试工具支持行为驱动开发(Behavior Driven DevelopmentBDD)、脚本编写、测试创建支持多类UI框架包括Qt、Java、Windows、WebHTML/JS、Android、iOS等。Coco跨平台和跨编译器的代码覆盖分析工具包适用于C、C、SystemC、C#、Tcl和QML代码Test Center集中测试管理平台Axivion静态代码分析专为安全关键型软件开发中的嵌入式C、C、C#系统及CUDA应用打造Qt FrameworkQt Core为C添加功能一种非常强大的无缝对象通信机制称为信号和槽可查询和可设计的对象属性分层和可查询的对象树它以一种自然的方式组织对象所有权并使用受保护的指针 (QPointer)可跨库边界工作的动态铸造Qt GUI提供用于窗口系统集成、事件处理、OpenGL和OpenGL ES集成、2D图形、基本图像、字体和文本的类。在Qt用户界面技术内部使用但也可直接使用例如使用低级OpenGL ES图形API编写应用程序。Qt Network为使用TCP/IP的应用程序编程提供API请求、Cookie和通过HTTP发送数据等操作由各种C类处理。Qt Qml为使用QML开发应用程序和库提供框架定义并实现语言和引擎基础架构并提供API使应用程序开发人员能够注册自定义QML类型和模块并将QML代码与JavaScript和C集成。提供QML和C API。Qt Quick编写QML应用程序的标准库提供用QML创建用户界面所需的所有基本类型。提供可视化画布包括用于创建和动画可视化组件、接收用户输入、创建数据模型和视图以及延迟对象实例化的类型。Qt Widgets提供一组用户界面元素用于创建经典的桌面风格用户界面。Qt Test单元测试和基准测试。QSignalSpy类为Qt的信号和槽提供简便的内省功能QAbstractItemModelTester允许对项目模型进行非破坏性测试。PyQt有多个版本PyQt4最后一个版本4.11.4发布于Jun 12, 2015不建议使用PyQt5最后一个版本5.15.11发布于Jul 19, 2024PyQt6当前维护版本新项目可考虑使用。安装pip install PyQt6示例PySideGitHub主页官方文档有多个版本PySide最后一个版本1.2.4发布于Oct 15, 2015不建议使用PySide2最后一个版本5.15.2.1发布于Jan 14, 2022老项目若有使用可维持现状或升级到PySide6PySide6PySide2已升级到5.*版本因此没有PySide3~PySide5最后一个版本6.10.1发布于Nov 20, 2025当前维护版本新项目可考虑使用。importsysfromPySide6.QtCoreimportQtfromPySide6.QtWidgetsimportQApplication,QLabelif__name____main__:appQApplication(sys.argv)labelQLabel(Hello World,alignmentQt.Alignment.AlignCenter)label.show()sys.exit(app.exec())PyMe公司主页官网Python GUI开发IDE工具。核心功能特性可视化开发提供拖拽式界面设计器支持快速创建复杂GUI界面调试运行内置编辑器支持运行和断点调试一键打包发布集成nuitka和PyInstaller支持生成Windows、Linux、MacOS可执行文件及Android apk包AI代码转换代码自动转为可视化工程文件开发者生态内置模板市场和组件商店提供数据库管理、游戏开发等工程框架。设计理念让界面设计和业务逻辑开发在同一环境中无缝进行。提供免费基础版但限4个窗口。VIP解锁无限窗口和代码加密功能月付19.9元或一次性999.9元。作为完整的GUI开发环境集成可视化界面编辑器、代码编辑器、调试器和打包工具提供一站式开发体验。采用所见即所得的设计方式开发者在设计界面时可实时看到界面效果直接为界面元素编写事件处理代码。实时预览即时反馈机制大大减少调试时间。核心功能是可视化界面编辑器工作区左侧是工具箱包含按钮、文本框、标签、列表框等常用控件以及布局容器、菜单、工具栏等高级组件。右侧是属性面板显示当前选中控件的各种属性如尺寸、位置、文本内容、颜色、字体等。中央是设计画布实时展示界面效果。提供强大的布局管理功能支持绝对定位和多种相对布局方式如网格布局、盒式布局等。使得界面能够适应不同尺寸的窗口实现响应式设计。支持多状态界面设计开发者可在同一个界面下设计在不同状态下的表现如正常状态、禁用状态、悬停状态等对于创建交互丰富的现代应用至关重要。在PyMe中每个界面控件都可绑定到一个用户变量这个变量在代码中可直接访问和操作实现界面与数据的双向绑定。修改变量值时界面会自动更新当通过界面修改数据时变量值也会相应变化。这种数据绑定机制大大简化界面与数据的同步问题。事件响应编辑只需在设计界面中选中一个控件通过右键菜单的事件响应弹出事件响应处理对话框选选择需要处理的事件类型然后就可以为事件快速的绑定函数或进行相应的处理比如点击按钮跳转到另一个界面。所有事件处理函数都组织在统一的区域便于查找和维护。主题定制到皮肤商店下载皮肤后通过选择顶部栏上的皮肤方案就可以实现一键换肤。传统的打包解决方案是使用PyInstaller、cx_Freeze等工具将Python应用打包成可执行文件需配置各种参数处理依赖关系会遇到各种问题。打包功能智能依赖分析自动分析项目代码识别所有必要的依赖库确保打包后的应用包含所有必需的组件可定制配置提供高级配置选项允许开发者自定义应用图标、版本信息、启动画面等体积优化采用先进的压缩和优化技术尽可能减少可执行文件的体积同时不牺牲运行效率加密处理对于商业应用PyMe支持直接将代码转成c编译pyd后再打包提高应用的安全度跨平台支持可以为Android系统生成对应的可执行文件。开发者在手机上也能运行应用。用PyInstaller、cx_Freeze等打包工具将Python应用打包成可执行文件但这个过程并不简单需要配置各种参数处理依赖关系会遇到各种问题。PythonCard官网基于wxPythonPyPI项目主页可看到最后一个版本是0.8.1发布于Oct 20, 2004。弃之。
返回列表