Python开发GUI常用库PyQt6和PySide6介绍之一:概述

Python开发GUI常用库PyQt6和PySide6介绍之一:概述

Python开发GUI有许多选择,下面是常见的选择:

Tkinter:Tkinter是Python标准库中的一个GUI工具包,易于学习和使用。它提供了丰富的组件和布局选项,适用于简单的GUI应用程序。Tkinter的优点是它与Python的集成非常紧密,不需要额外的安装。然而,它在外观和功能方面可能相对较简单,并且缺乏一些现代GUI框架的高级功能。

基于tkinter的GUI编程,在以前文章中已介绍比较多:

Python 的Tkinter包系列之一:窗口初步 https://blog.csdn.net/cnds123/article/details/127227651

Python 的Tkinter包系列之二:菜单  https://blog.csdn.net/cnds123/article/details/127319885

Python 的Tkinter包系列之三:Canvas(画布)https://blog.csdn.net/cnds123/article/details/127344534

Python 的Tkinter包系列之四:对话框 https://blog.csdn.net/cnds123/article/details/127392512

Python 的Tkinter包系列之五:事件  https://blog.csdn.net/cnds123/article/details/127411016

python 的Tkinter包系列之六:好例子  https://blog.csdn.net/cnds123/article/details/127487982

在此就不多说了。

PyQt:PyQt是一个功能强大且成熟的GUI框架,基于Qt库。它提供了丰富的组件、布局和主题选项,以及强大的功能和灵活性。PyQt的优点是它具有现代化的外观和丰富的功能,适用于复杂的GUI应用程序。然而,由于PyQt的许可证问题,您需要确保在使用之前了解和遵守相关的许可条款。

PySide6:PySide6是Qt的另一个Python绑定,与PyQt类似,但使用了更宽松的许可证(LGPL)。它提供了与PyQt相似的功能和API,因此如果您熟悉PyQt,可以很容易地切换到PySide6。与PyQt相比,PySide6的社区支持可能相对较少,但它仍然是一个可行的选择。

PyQt6和PySide6都是用于创建基于Qt框架的Python图形用户界面(GUI)应用程序的工具包。它们提供了访问Qt功能和组件的接口,使开发者能够使用Python语言轻松创建跨平台的GUI应用程序。PyQt6是由Riverbank Computing开发和维护的,而PySide6是由Qt公司开发和维护的。

PyQt6提供两种许可证:一种是商业许可证,如果你想在你的应用程序中使用PyQt6而不公开源代码,你需要购买这种许可证。另一种是GNU通用公共许可证(GPL,General Public License),如果你的应用程序也是开源并且遵循GPL许可证,你可以免费使用PyQt6。

PySide6则是基于LGPL(Lesser General Public License)许可证,这意味着你可以在你的应用程序中免费使用PySide6,它不要求你的应用程序必须开源。但是,如果你修改了PySide6的源代码,那么根据LGPL的要求,你必须将这些修改公开。

如果您对GUI开发有较少经验或需要一个简单的界面,Tkinter可能是一个不错的选择。如果您需要更复杂的功能和现代化的外观,PyQt和PySide6都是不错的选择,但您需要对许可证问题进行评估和决策。

由于历史原因,PyQt和PySide在某些情况下具有不同的API和用法。虽然它们都可以用于创建Qt应用程序,但在具体的代码编写和使用上可能会有一些差异。以下是一些可能的差异:

☆模块导入:在导入PyQt和PySide模块时,存在差异。在PyQt中,通常使用import PyQt6.QtCore、import PyQt6.QtGui等方式导入模块。而在PySide中,通常使用import PySide6.QtCore、import PySide6.QtGui等方式导入模块。

☆类和函数名称:在某些情况下,PyQt和PySide使用不同的类和函数名称。例如,在处理事件循环时,PyQt使用QCoreApplication类,而PySide使用QtCore.QCoreApplication类。这种差异可能需要在代码中进行适当的调整。

☆信号与槽机制:PyQt和PySide在信号与槽机制方面存在一些差异。尽管它们都使用信号和槽来处理对象之间的通信,但在具体的语法和用法上可能会有一些不同。有些代码可能需要在从PyQt迁移到PySide时进行修改。“信号和槽”是Qt框架中一种用于实现对象间通信的机制,用于处理GUI事件、线程间通信、网络通信等各种场景。

☆底层细节:由于PyQt和PySide是由不同的团队开发和维护的,它们在底层实现和内部细节上可能存在差异。这些差异可能在一些高级使用场景或特定功能的使用中显现出来。

尽管存在一些差异,但PyQt和PySide都遵循Qt框架的设计原则和API约定,因此在大多数情况下,它们的代码是相似的。对于大多数Qt应用程序开发者来说,这些差异不会对使用体验产生重大影响,而且通常可以通过简单的修改来处理。

在选择使用PyQt还是PySide时,您可以考虑许可证要求、文档和社区支持等因素,以及个人和团队的偏好。在迁移或切换工具包时,建议查阅相关的文档和资源,以了解具体的差异和迁移指南。

Windows10中PySide6的安装使用

PySide6是Python的一个用于创建桌面应用程序的库,基于Qt6框架。它提供了对Qt Widgets、Qt GUI和Qt Core功能的访问,使开发人员可以使用Python来构建具有图形用户界面(GUI)的应用程序。PySide6具有以下特点:

☆易学易用:PySide6使用与Python相同的语法和编码风格,使得开发人员可以快速上手并开始创建GUI应用程序。

☆强大的功能:PySide6提供了丰富UI控件,包括按钮、文本框、列表框、对话框、绘图、动画等,可以满足各种应用程序的需求。

☆跨平台:基于Qt6框架,PySide6支持多种操作系统,如Windows、macOS、Linux等,使得开发的应用程序可以在多个平台上运行。

☆可视化设计工具:PySide6提供了Qt Designer,这是一个可视化的界面设计工具。你可以使用它来创建和布局应用程序的界面,然后将设计好的界面文件与PySide6代码相结合。

Windows10中PySide6的安装使用

要开始使用PySide6,首先需要安装库。可以使用pip来安装,命令如下:

pip install PySide6

我的电脑中,安装有了多个Python版本,需要指定版本号安装,

具体可参见Python第三方模块(库、包)安装、卸载与查看及常见问题解决(修订)-CSDN博客

我这里用:py -3.10 -m pip install PySide6

在Python 的IDEL Shell中用import PySide6 回车,如果没有出现红字就说明安装成功。

以下是一个简单的PySide6应用程序示例:

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QMessageBox

# 创建应用程序对象
app = QApplication(sys.argv)

# 创建主窗口
window = QMainWindow()
window.setGeometry(300, 300, 400, 300)
window.setWindowTitle("PySide6 应用程序示例") # 设置窗口标题

# 创建按钮
button = QPushButton("Click me!", window)
button.setGeometry(50, 50, 100, 30)  # 设置按钮的位置和大小

# 按钮点击事件的处理函数
def on_button_clicked():
    message_box = QMessageBox()
    message_box.setText("Hello, PySide6!") # 创建一个消息框并显示消息
    message_box.exec()

# 将按钮点击事件与处理函数关联
button.clicked.connect(on_button_clicked)

# 显示窗口
window.show()

# 运行应用程序的事件循环
sys.exit(app.exec())

运行效果如下图:

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

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

相关文章

后端相关随机题目记录(1)

目录 后端相关随机题目记录(1) 后端相关随机题目记录(1)Bean的类型以及作用域Bean的生命周期Mysql的底层数据结构RedisHttp和Https区别AOP在项目的应用 自定义注解?请求在spring中的一个流程Nacos与zk的区别SpringMV…

那些年项目中踩的那些坑(二)

目录 一、硬件资源与软件需求不匹配1.1 背景1.2教训 一、硬件资源与软件需求不匹配 1.1 背景 在项目中期需要添加XCP到TDA4的main域中,但是发现所有的八路can中已经有七路can被占用,剩下一路因为没有TJA1045驱动无法使用。 1.2教训 1.软件架构缺失&am…

FPGA时序分析与时序约束(二)——时钟约束

目录 一、时序约束的步骤 二、时序网表和路径 2.1 时序网表 2.2 时序路径 三、时序约束的方式 三、时钟约束 3.1 主时钟约束 3.2 虚拟时钟约束 3.3 衍生时钟约束 3.4 时钟组约束 3.5 时钟特性约束 3.6 时钟延时约束 一、时序约束的步骤 上一章了解了时序分析和约束…

高级桌面编程(一)

前言 学习心得:C# 入门经典第8版书中的第15章《高级桌面编程》 创建控件并设置样式 1 样式 Style WPF 当中我们可以对每一个控件进行完全的自定义。我们可以随意更改控件外观和功能。提供我们能完成这样的效果与控件的样式(Style)有着不可分…

如何实现TensorFlow自定义算子?

在上一篇文章中 Embedding压缩之基于二进制码的Hash Embedding,提供了二进制码的tensorflow算子源码,那就顺便来讲下tensorflow自定义算子的完整实现过程。 前言 制作过程基于tensorflow官方的custom-op仓库以及官网教程,并且在Ubuntu和Mac…

第8次实验:UDP

目的: 来看一下UDP(用户数据报协议)的细节。UDP是整个互联网上使用的一种传输协议。在不需要可靠性的情况下,作为TCP的替代品在互联网上使用。它在你的课文的第6.4节中有所涉及。在做这个实验之前,先复习一下这一部分 …

【精选】计算机网络教程(第7章网络安全)

目录 前言 第7章网络安全 1、公钥 2、私钥 3、数字签名 前言 总结计算机网络教程课程期末必记知识点。 第7章网络安全 1、公私密钥和对称密钥 公私密钥(或非对称密钥)和对称密钥是在密码学中用于加密和解密数据的两种不同的密钥类型。 公私密钥…

MySQL主从复制详解

目录 1. 主从复制的工作原理 1.1. 主从复制的角色 1.2. 主从复制的流程 2. 配置MySQL主从复制 2.1. 确保主服务器开启二进制日志 2.2. 设置从服务器 2.3. 连接主从服务器 2.4. 启动复制 3. 主从复制的优化与注意事项 3.1. 优化复制性能 3.2. 注意复制延迟 3.3. 处理…

Leetcode 376 摆动序列

题意理解: 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 如果是摆动序列,前后差值呈正负交替出现 为保证摆动序列尽可能的长,我们可以尽可能的保留峰值,,删除上下坡的中间值&…

2023.12.17 关于 Redis 的特性和应用场景

目录 引言 Redis 特性 内存中存储数据 可编程性 可扩展性 持久化 支持集群 高可用性 Redis 优势 Redis 用作数据库 Redis 相较于 MySQL 优势 Redis 相较于 MySQL 劣势 Redis 用作缓存 典型场景 Redis 存储 session 信息 Redis 用作消息队列 初心 消息队列的…

redis之五种基本数据类型

redis存储任何类型的数据都是以key-value形式保存,并且所有的key都是字符串,所以讨论基础数据结构都是基于value的数据类型 常见的5种数据类型是:String、List、Set、Zset、Hash 一) 字符串(String) String是redis最基本的类型,v…

175. 电路维修(BFS,双端队列)

175. 电路维修 - AcWing题库 达达是来自异世界的魔女,她在漫无目的地四处漂流的时候,遇到了善良的少女翰翰,从而被收留在地球上。 翰翰的家里有一辆飞行车。 有一天飞行车的电路板突然出现了故障,导致无法启动。 电路板的整体…

保姆级 Keras 实现 YOLO v3 二

保姆级 Keras 实现 YOLO v3 二 一. 数据准备二. 从 xml 或者 json 文件中读出标注信息三. K-Means 计算 anchor box 聚类尺寸读出所有标注框尺寸K-Means 聚类 四. 代码下载 上一篇 文章中, 我们完成了 YOLO v3 的网络定义, 相当于完成了前向计算功能, 但此时网络中的参数处于随…

MySQL数据库 函数

目录 函数概述 字符串函数 数值函数 日期函数 流程函数 函数概述 函数是指一段可以直接被另一段程序调用的程序或代码。也就意味着,这一段程序或代码在MysQL中已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即…

前后端传参中遇见的问题

前后端传参经常容易出错,本文记录开发springBootMybatis-plusvuecli项目中出现的传参问题及解决办法 1.前后端没有跨域配置,报错 解决方法:后端进行跨域配置,拷贝CorsConfig类 package com.example.xxxx.config;import org.spr…

k8s-ingress 8

ExternalName类型 当集群外的资源往集群内迁移时,地址并不稳定,访问域名或者访问方式等会产生变化; 使用svc的方式来做可以保证不会改变:内部直接访问svc;外部会在dns上加上解析,以确保访问到外部地址。 …

2024年软件测试入坑指南,新人必看系列

本科非计算机专业,在深圳做了四年软件测试工作,从之前的一脸懵的点点点,到现在会点自动化测试,说一点点非计算机专业人员从事软件测试的心得体会,仅供参考交流。 如果你是非计算机专业,毕业不久&#xff0…

CMOS电源稳压器LDO

一、基本概述 TX6213是一款300mA Low Power LDO,输入电压2.5V~6.5V,输出范围1.0V~3.3V,输出电流300mA,PSRR为75dB 1KHz,压差为220mV IOUT200mA。 二、应用场景 MP3/MP4 Players Cellphones, radiophone, digital ca…

智能优化算法应用:基于适应度相关算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于适应度相关算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于适应度相关算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.适应度相关算法4.实验参数设定5.算法…

C++设计模式-Builder 构建器

通过“对象创建” 模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。 一、动机 在软件系统中,有时候面临着“一个复…
最新文章