Python小细节之Gui图形化界面库的对比和选择(一分钟版)

news2025/6/9 16:38:27

引言

我想要把打包的python程序变得好看
交互起来变得简单
遂 图形化界面
然 相关的库有很多
所以 对比!
在这里插入图片描述

开整

8个图形化界面库

在Python中,有多种图形用户界面(GUI)库可以用来创建丰富的图形化应用程序。以下是一些主要的图形化界面库:

  1. Tkinter

    • Tkinter 是 Python 的标准 GUI 库,随 Python 标准库一起分发,不需要额外安装。
    • 它基于 Tcl/Tk 工具包,提供了基本的窗口、按钮、文本框、列表框、滑块等组件。
  2. PyQt / PySide

    • PyQt 是一个强大的跨平台 GUI 库,基于 Qt 框架。
    • PySide 是另一个基于 Qt 的库,与 PyQt 类似,但许可证有所不同。
    • 这两个库都提供丰富的组件和高级功能,适用于构建复杂的桌面应用。
  3. wxPython

    • wxPython 是一个用于构建本地外观和感觉的应用程序的跨平台 GUI 库,它封装了 C++ 的 wxWidgets 库。
  4. Kivy

    • Kivy 专注于开发触摸优化的应用,尤其适合移动设备和现代触摸屏操作,同时也支持桌面系统。
  5. GTK+ with PyGObject

    • GTK+ 是一个流行的跨平台 GUI 工具包,通过 PyGObject 绑定可以方便地用 Python 调用。
  6. PySimpleGUI

    • PySimpleGUI 是一个基于 tkinter、WxPython、Qt 和 Remi 等多个后端的简化版 GUI 库,易于上手。
  7. Remi

    • Remi 是一个使用 Python 编写的 Web GUI 库,允许你创建可部署为 Web 应用的桌面应用。
  8. Pyside6/PyQt6

    • 新一代的 PyQt 和 PySide 版本,基于 Qt6,支持更多的现代化特性和更好的性能。

优缺点分析

当然,以下是对上述提到的一些Python图形化界面库的简要优缺点分析和建议:

  1. Tkinter

    • 优点:Python自带的标准库,无需额外安装;跨平台支持良好;适合初学者入门学习。
    • 缺点:界面样式相对简单、老旧,对于复杂的现代GUI设计可能不够灵活;功能相对有限,不适合开发大型复杂应用。
  2. PyQt/PySide(Qt绑定):

    • 优点:功能强大,组件丰富;可创建专业级桌面应用;跨平台;与QML结合可以实现更酷炫的动画效果。
    • 缺点:学习曲线较陡峭;对新手来说可能较为复杂;需要额外安装,并且商业使用时需要考虑许可证问题(PyQt有GPL和商业许可版本,而PySide2/LGPLv3则更为宽松)。
  3. wxPython

    • 优点:跨平台,提供本地化外观和感觉;丰富的组件集;社区活跃。
    • 缺点:更新速度相对较慢;部分特性可能不如Qt或GTK+先进;文档相对于其他一些库来说不那么全面。
  4. Kivy

    • 优点:专为触摸设备优化,适用于移动应用和游戏开发;基于OpenGL,性能好;创新的事件驱动模型。
    • 缺点:主要用于移动端和平板电脑,桌面应用上可能不太适用;对于传统桌面应用开发者而言学习曲线较陡峭。
  5. GTK+ with PyGObject

    • 优点:跨平台,拥有现代化界面风格;与Linux系统集成度高;开源免费。
    • 缺点:在Windows和macOS上的用户体验相比原生应用略差;社区规模和资源相对较小。
  6. PySimpleGUI

    • 优点:简化了接口设计,易于快速创建GUI应用;同时支持多种后端;非常适合初学者和快速原型设计。
    • 缺点:由于是抽象层,其功能深度和灵活性可能不如直接使用底层框架;高级定制能力受限。
  7. Remi

    • 优点:基于Web技术构建GUI,可以轻松部署到Web服务器并远程访问;轻量级;不需要浏览器插件即可运行。
    • 缺点:不是传统的桌面应用,无法利用本地操作系统特性;可能不适合需要大量本地硬件交互的应用。
  8. Pyside6/PyQt6

    • 优点:基于Qt6,性能更好,功能更加强大;延续了Qt系列的优点,提供丰富的API和组件。
    • 缺点:新版本的兼容性和稳定性需根据实际项目需求评估;依然存在许可证问题。

建议:

  • 对于初学者或者小型项目,可以从Tkinter开始学习,因为它的学习门槛较低。
  • 如果你计划开发复杂的桌面应用,并希望具有良好的跨平台表现和丰富的UI组件,可以选择PyQt(如果关心许可证问题的话,选择PySide)。
  • 若你的目标是在触摸设备上开发应用,或是涉及高性能图形渲染,Kivy才是你的选择。
  • 考虑到将来有可能将应用部署到Web环境,Remi可以作为一个备选项。

结尾

我选择了tkinter
在这里插入图片描述

原因两点:
自带轻量
初学对界面要求不高,且看到github上已经有好看的tk库后续可以进一步优化
在这里插入图片描述

那么
有缘再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1355103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MOS管选型科普

背景 朋友工厂在生产检测BMS的时候,老化测试大电流200A; 现在他们使用的是一款通用电源 价格20W; 找我设计一款恒流源,需求如下: 0~200A电流可调 电压范围和他交流中了解到,电压最大也就1V左右&#x…

程序媛的mac修炼手册-- 终端shell的驾驭 zsh vs bash

进入终端(Terminal)为新下载的应用配置环境,是Mac生产力up up的关键一步,更是编程小白装大神的第一步。Fake it till you make it , 硅谷大神标准路径~ shell的基本原理 为应用配置环境,相当于在应用和操作系统间架桥。由此&…

Linux环境vscode clang-format格式化:vscode clang format command is not available

问题现象 vscode安装了clang-format插件,但是使用就报错 问题原因 设置中配置的clang-format插件工具路径不正确。 解决方案 确认本地安装了clang-format工具:终端输入clang-format(也可能是clang-format-13等版本,建议tab自…

18|CAMEL:通过角色扮演脑暴一个鲜花营销方案

18|CAMEL:通过角色扮演脑暴一个鲜花营销方案 CAMEL 交流式代理框架 下面我们一起来看看 CAMEL——这个多 AI 通过角色扮演进行交互的框架,以及它在 LangChain 中的具体实现。 CAMEL,字面意思是骆驼。这个框架来自于论文《CAMEL:…

STGAN:用于交通数据插补的时空生成对抗网络

文章地址: STGAN: Spatio-temporal generative adversarial network for traffic data imputation 主要研究问题: 由于硬件故障或数据传输,观测到的交通数据中产生了噪声和缺失条目。这些质量差的数据无疑会降低ITS的性能; 本文贡献: 为交通数据插补任务提出了一种改进…

leetcode13 罗马数字转整数

题目描述:罗马数字由七种字符组成,分别为 I、V、X、L、C、D 和 M,对应的数值分别为 1、5、10、50、100、500 和 1000。在一般情况下,小的数字位于大的数字右边,但有特殊情况,如 IV 表示 4,IX 表…

Spring Cloud之OpenFeign异常处理

简易原理图 原理基于请求头传递错误消息,利用aop和全局异常拦截机制实现。 服务提供者 远程调用本地方法b,throw异常出来FeignExceptionAspect AOP拦截处理异常到请求头中,继续throwGlobalExceptionHandler处理,返回响应Respons…

腾讯云Centos9使用docker的方式安装APISIX

在虚拟机中安装Docker、Docker-compose 安装Docker 清除旧版本的docker yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 安装docker的依赖 yum install -y yum-utils device-ma…

NE555学习笔记-2024

实物图片 NE555引脚图 内部时序图 示列1,红外接收电路 红外接收电路的工作原理:在上述电路中,TSOP1738构成了该电路的主要组成部分,旨在检测来自任何来源的红外信号。这用于检测38 KHz范围的信号,因此命名为“TSOP173…

LeetCode 2487. 从链表中移除节点:单调栈

【LetMeFly】2487.从链表中移除节点:单调栈 力扣题目链接:https://leetcode.cn/problems/remove-nodes-from-linked-list/ 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1: 输…

详谈电商网站建设的四大流程!

在21世纪的互联网时代,电商网站的建设是每个企业发展不可缺少的一次机遇。企业商城网站建设成功也许会获得更大的了利润;如果网站建设不成功,那么也会带来一定的损失。所以建设电商网站不是那么一件简单的事情。那么电商网站制作流程是怎样的…

2024年【上海市安全员C3证】试题及解析及上海市安全员C3证模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 上海市安全员C3证试题及解析根据新上海市安全员C3证考试大纲要求,安全生产模拟考试一点通将上海市安全员C3证模拟考试试题进行汇编,组成一套上海市安全员C3证全真模拟考试试题,学员…

el-select下拉框 change事件返回该项所有数据

主要代码 value-key <template><div><el-selectv-model"value"value-key"label"placeholder"请选择"change"selectChange"><el-optionv-for"item in options":key"item.label":label"…

数据库:基础SQL知识+SQL实验2

&#xff08;1&#xff09;基础知识&#xff1a; 1.JOIN&#xff08;连接&#xff09;&#xff1a; 连接操作用于根据指定的条件将两个或多个表中的数据行合并在一起。JOIN 可以根据不同的条件和方式执行&#xff0c;包括等值连接、不等值连接等。 &#xff08;1&#xff09…

5分钟了解接口测试

接口测试是指对系统接口进行测试的一种质量保障手段&#xff0c;主要是验证接口的功能、性能、安全性等方面是否符合预期。 在接口测试中&#xff0c;可以测试以下内容&#xff1a; 功能测试&#xff1a;验证接口的输入和输出是否符合预期&#xff0c;包括参数的正确性、返回结…

【Docker】docker部署conda并激活环境

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、新建dockerfile文件二、使用build创建镜像1.报错&#xff1a;Your shell has not been properly configured to use conda activate.…

基于LLM+RAG的问答

每日推荐一篇专注于解决实际问题的外文&#xff0c;精准翻译并深入解读其要点&#xff0c;助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号 原文标题&#xff1a;LLMRAG based Question Answering 原文地址&#xff1a;https://teemukanstren.com/2023/12/25/llm…

【网络安全】上网行为代理服务器Network Agent配置

文章目录 About Network Agent SettingsIgnore Internal TrafficInternal Traffic to MonitorAdditional SettingsBandwidth calculation intervalLog protocol traffic periodically 推荐阅读 本文基于websense &#xff08;现在称为Forcepoint&#xff09;的Network Agent 配…

npm发布js工具包

一、创建项目 1、在github上创建一个项目&#xff0c;然后拉取至本地&#xff0c;进入项目目录2、执行 npm init 生成json文件3、创建 src/index.ts 入口文件和 src/isObject.ts 工具方法 src/index.ts export { default as isObject } from ./isObject src/isObject.ts /…

Zookeeper 分布式服务协调治理框架介绍入门

文章目录 为甚么需要Zookeeper一、Zookeeper 介绍1.1 介绍1.2 Zookeeper中的一些概念1.2.1 集群角色1.2.2 会话 session1.2.3 数据节点 Znode1.2.4 版本1.2.5 事件监听器 Watcher1.2.6 ACL 权限控制表(Access Control Lists) 二、 Zookeeper的系统模型2.1.1 ZNode节点2.1.2 ZNo…