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

引言

我想要把打包的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库后续可以进一步优化
在这里插入图片描述

那么
有缘再见!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

竞赛练一练 第23期:NOC大赛每日一练,python题目刷题第8天,包含答案解析

题目来自:NOC 大赛创客智慧编程赛项Python 复赛模拟题(二) NOC大赛创客智慧编程赛项Python 复赛模拟题(二) 第一题: 编写一个成绩评价系统,当输入语文、数学和英语三门课程成绩时,输出三门课程总成绩及其等级。 (1)程序提示用户输入三个数字,数字分别表示语文、数学、…

3.1 数据链路层概述

目录 3.1 数据链路层概述3.1.1 关于数据链路层什么是数据链路从协议栈看数据链路层数据链路层信道类型 3.1.2 三个基本问题封装成帧透明传输差错控制循环冗余检验CRC(Cyclic Redundancy Check)原理 3.1 数据链路层概述 3.1.1 关于数据链路层 什么是数据…

odoo17 | 模型视图继承

前言 Odoo的强大之处在于它的模块化。模块专门用于满足业务需求,但模块也可以彼此交互。这对于扩展现有模块的功能非常有用。例如,在我们的房地产场景中,我们希望在常规用户视图中直接显示销售人员的属性列表。 但是在讨论特定的Odoo模块继…

HackTheBox - Medium - Linux - UpDown

UpDown UpDown 是一台中等难度的 Linux 机器,暴露了 SSH 和 Apache 服务器。在Apache服务器上,有一个Web应用程序,允许用户检查网页是否已启动。服务器上标识了一个名为“.git”的目录,可以下载以显示目标上运行的“dev”子域的源…

GA算法简介

GA算法简介 前言一、GA是什么二、GA简介1.思想2.流程3.过程 前言 今天学习一下优化中非常出名的遗传(GA)算法 ,它的起源可是来自达尔文的生物进化论。 一、GA是什么 百科定义:遗传算法(Genetic Algorithm,GA)最早是…

Java多线程技术11——ThreadPoolExecutor类的使用1-备份

1 概述 ThreadPoolExecutor类可以非常方便的创建线程池对象,而不需要程序员设计大量的new实例化Thread相关的代码。 2 队列LinkedBlockingQueue的使用 public class Test1 {public static void main(String[] args) {LinkedBlockingQueue queue new LinkedBlocki…

四则运算 C语言xdoj20

问题描述: 输入两个整数和一个四则运算符,根据运算符计算并输出其运算结果(和、差、积、商、余之一)。注意做整除及求余运算时,除数不能为零。 输入说明: 使用scanf()函数输入两个整数和一个运算符&#xf…

【好书推荐】深入理解现代JavaScript

目录 推荐理由内容简介本书阅读对象为什么推荐这本书,看大佬们怎么说总结 T. J. Crowder是一位拥有30年经验的软件工程师。在他的整个职业生涯中,他至少有一半时间是在使用JavaScript从事开发工作。他经营着软件承包和产品公司Farsight Software。他经常…

工业协议转换网关:打破通信壁垒,实现设备互联

在工业自动化领域,各种设备和系统间的通信协议不尽相同,这给不同设备间的集成和数据交互带来了挑战。工业协议转换网关作为一种解决这一问题的关键设备,能够实现不同协议间的转换和数据传输,打破通信壁垒,提高设备的协…

2.8 EXERCISES

如果我们想使用每个线程来计算向量加法的一个输出元素,那么将线程/块索引映射到数据索引的表达式是什么? 答:C 假设我们想用每个线程来计算向量加法的两个(相邻)元素。将线程/块索引映射到i(由线程处理的…

SpringSecurity集成JWT实现后端认证授权保姆级教程-数据准备篇

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥网站…

进阶学习——Linux系统安全及应用

目录 一、系统安全加固 1.账号安全基本措施 1.1系统账号清理 1.1.1延伸 1.2密码安全控制 1.3命令历史限制 1.4终端自动注销 二、使用su命令切换用户 1.用途及用法 2.密码验证 3.限制使用su命令的用户 4.查看su操作记录 5.sudo(superuse do)…

Linux下QT生成的(.o)、(.a)、(.so)、(.so.1)、(.so.1.0)、(.so.1.0.0)之间的区别

记录一下遇到的问题:Linux系统下Qt编译第三方动态库会生成多个.so文件,不了解的小伙伴可能很疑惑: (1)Linux 下 QT 生成的(.o)、(.a)和(.so)三个文…

如何向嵌入式设备中添加tcpdump工具

说明:tcpdump是一个在网络设备调试中一个非常重要的工具,它并不像hexdump等工具集成在busybox里面,也不像其他的软件一样只需要依赖linux标准的库就可以实现,它需要pcap相关的库和加密的相关库。 本文主要是基于realtek 83系列的…

APPnium 自动化实践 :第一步adb 连接手机

1. 下载安装 adb ,添加到环境变量。 ADB Download - Get the latest version of ADB and fastboot 2. 手机开启开发者模式 https://developer.huawei.com/consumer/cn/doc/quickApp-Guides/quickapp-open-developer-option-0000001137005543 3. adb 连接设备 【And…

网络安全与IP地址:构建数字世界的前沿堡垒

网络安全是当今数字社会中不可忽视的挑战之一。而IP地址,作为互联网通信的基础协议,既是数字化时代的桥梁,也是网络安全的关键节点。本文将剖析IP地址在网络安全领域的作用,以及如何利用其特性建立有效的网络安全策略。 IP地址&a…

【图神经网络导论】之第9章模型变体(刘知远)

第9章不同图类型的模型变体 文章目录 第9章不同图类型的模型变体9.1 有向图9.2 异构图9.3 带有边信息的图9.4 动态图9.5 多维图 第4章介绍的基础GNN模型"被用于处理无向图,这些图包含具有标签的节点,是最简单的图。然而,在现实世界中还有…

了解一下InternLM3

在 InternStudio 平台中选择 A100(1/4) 的配置,如下图所示镜像选择 Cuda11.7-conda,接下来打开刚刚租用服务器的进入开发机,并且打开其中的终端开始环境配置、模型下载和运行 demo。入开发机后,在页面的左上角可以切换 JupyterLab…

CSS 压重按钮 效果

<template><view class="cont"><div class="container"><div class="pane"><!-- 选项1 --><label class="label" @click="handleOptionClick(0)":style="{ color: selectedOption ==…

GD32 支持IAP的bootloader开发,使用串口通过Ymodem协议传输固件(附代码)

资料下载: https://download.csdn.net/download/vvoennvv/88713921 一、概述 关于IAP的原理和Ymodem协议&#xff0c;本文不做任何论述&#xff0c;本文只论述bootloader如何使用串口通过Ymodem协议接收升级程序并进行IAP升级&#xff0c;以及bootloader和主程序两个工程的配置…