【Python】PySide6使用入门和注意事项

news2024/12/28 5:09:55

文章目录

    • 前言
    • 关于PySide和PyQt
    • Qt Designer
    • pyside6在vscode中ui文件转换
    • 兼容性问题
    • 主程序结构
    • 蓝牙协议初探(应用层)

前言

  最近在开发一个带界面的软件,需要使用蓝牙,然后找到一个开源仓库使用的是Qt里面的Qbluetooth模块,并且是基于PySide6开发的。之前实际项目中只用过PyQt5,尝试过PySide2,感觉这两者基本一致,代码上可能只需要改一下导入就行。一开始以为PySide6也差不多,实测确实代码上差异很小(除了import外其他的需要略微修改),但在这个项目中还是感觉PySide6开发更方便。遂简单记录一下。

关于PySide和PyQt

  这两者来历相似,但开发维护的公司不同,有兴趣的可以看看以下附的链接。

  • 历史变革
  • pyside2到pyside6的变化和区别

Qt Designer

  PyQt开发的灵魂在于可以用可视化的方式设计界面,然后直接用工具一步生成python代码,非常快捷。一开始还担心PySide6的界面设计不再兼容PyQt5,即不是使用Qt Designer。但好在还是兼容的,二者的界面设计软件就是同一个designer。

pyside6在vscode中ui文件转换

  之前使用PyQt5开发时,常用的插件是那个PYQT Integration,它可以实现右键一步将ui文件和qrc文件转换成python代码,这样可以代码直接调用,非常方便。

在这里插入图片描述

如果使用PySide6开发,需要安装Qt for Python这个插件

在这里插入图片描述

但是使用这个插件必须要安装PySide6的库,否则会出现弹窗报错:

在这里插入图片描述

看内容,是跟qml相关的设置,如果不使用qml,可以忽略。

兼容性问题

Python版本要求

  • PySide6要求Python < 3.11, >=3.6
  • PySide2要求Python>=2.7、!=3.0.、!=3.1.、!=3.2.、!=3.3.、!=3.4.*、< 3.11
  • PySide 要求Python 2.6 或更高版本,不支持Python3

参考链接

Windows版本要求

  实测貌似PySide6对Windows11支持不够好,会出现代码卡死的现象。

主程序结构

  类似于PyQt5,PySide6一般也是先定义一个界面类,要求继承QWidget或者QMainWindow,然后初始化一个application,再运行即可。

from PySide6.QtWidgets import QApplication, QWidget

# Only needed for access to command line arguments
import sys

# You need one (and only one) QApplication instance per application.
# Pass in sys.argv to allow command line arguments for your app.
# If you know you won't use command line arguments QApplication([]) works too.
app = QApplication(sys.argv)

# Create a Qt widget, which will be our window.
window = QWidget()
window.show()  # IMPORTANT!!!!! Windows are hidden by default.

# Start the event loop.
app.exec()

# Your application won't reach here until you exit and the event
# loop has stopped.

Reference

蓝牙协议初探(应用层)

  因为这个项目需要使用到蓝牙,所以花了点时间学习蓝牙的上层应用协议,即了解蓝牙协议大概有哪些部分及各个部分之间的关系。
  首先PySide6自带了蓝牙的库:

from PySide6.QtBluetooth import (
    QBluetoothDeviceDiscoveryAgent,
    QLowEnergyController,
    QLowEnergyService,
    QLowEnergyCharacteristic,
    QBluetoothUuid,
    QBluetoothDeviceInfo,
    QLowEnergyDescriptor,
)

各个模块的具体使用方式建议查找文档或者找个开源的仓库学习一下代码。

  蓝牙协议方面,最重要的就是各种uuid,首先设备有uuid,类似于计算机网卡的IP,通过scan找到想连接的设备(一般是通过名称来连接),连接之后,需要查找设备中的服务(Service),所谓服务,可以理解为设备中的一些线程,比如有传输电池数据的线程,传输同步时间的线程,传输音乐数据或其他特定数据的线程。之所以叫做服务,是因为这些线程有些不是默认运行的,需要先去“访问”。然后每个服务的下面有属性(Characteristic),就是这个服务的一些设置或者说状态指示。比如说属性中会说明这个服务是只读,还是可读可写,是否可订阅等信息。每个服务和属性都是具有各自的uuid的,这些也是在编程中使用较多的常数。

  基本使用步骤建议参考这篇文章

附:蓝牙协议详解

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

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

相关文章

使用ARK工具ATool清除典型蠕虫MyDoom

1 概述 在长期的日常安全事件监测过程中&#xff0c;安天CERT经常捕获到大量的MyDoom蠕虫样本和传播该蠕虫的钓鱼邮件。受害主机感染MyDoom后会被放置后门&#xff0c;以便攻击者下发后续恶意软件&#xff0c;进行攻击或窃密等操作。MyDoom蠕虫最早发现于2004年&…

语音质量评价方法之MOS

引言 在语音增强、语音合成、语音转换、声音转换、语音克隆、语音修复等等领域&#xff0c;常常要对输出的语音进行评价。对语音的质量评价一般关注两个方面&#xff0c;即主观评价和客观评价。主观评价就是人凭借听觉感受对语音进行打分&#xff0c;客观评价比较广泛&#xf…

吉林省教育学院学报杂志社吉林省教育学院学报编辑部2024年第5期目录

“研培一体”理论与实践 教师培训管理共同体的职能定位与价值追求 张岩; 1-3 数字化转型背景下教师培训工作的发展路径 李春光; 4-6 挖掘数智潜能&#xff0c;推进教师培训融合创新 鲍赫; 7-9《吉林省教育学院学报》投稿&#xff1a;cn7kantougao163.com 精准培…

网络安全等级保护制度详解,一文掌握核心要点!

一、等级保护制度发展情况 等级保护制度的法律依据 《计算机信息系统安全保护条例》&#xff08;1994年General Office of the State Council第147号令&#xff09; 公安部主管全国计算机信息系统安全保护工作。 计算机信息系统实行安全等级保护&#xff0c;安全等级的划分…

夏季河湖防溺水新举措:EasyCVR+AI视频智能监控系统保障水域安全

近日一则新闻引起大众关注&#xff0c;有网友发布视频称&#xff0c;假期在逛西湖时&#xff0c;发现水面上“平躺”漂浮着一名游客在等待救援。在事发3分钟内&#xff0c;沿湖救生员成功将落水游客救到了岸边。 随着夏季的到来&#xff0c;雨水增多&#xff0c;各危险水域水位…

ensp模拟器USG6000V1配置DCHP功能

接着上一篇配置&#xff0c;继续本篇的内容。开启DHCP功能非常简单&#xff0c;只需几个命令即可。实验拓扑图也非常简单&#xff0c;如下&#xff1a; 开启防火墙DHCP功能&#xff1a; [USG6000V1]dhcp enable 选择DHCP接口并设置接口IP地址&#xff0c;这里给g1/0/0配置2网…

Chromium 开发指南2024 Mac篇-编译前的准备工作(一)

1.引言 Chromium 是一款开源的网页浏览器项目&#xff0c;作为 Google Chrome 浏览器的基础&#xff0c;其卓越的性能和广泛的应用使其成为众多开发者研究和学习的对象。对于希望深入了解浏览器内核&#xff0c;或是计划在 Chromium 基础上开发自定义浏览器的开发者来说&#…

【leetcode刷题】面试经典150题 88.合并两个有序数组

leetcode刷题 面试经典150 88. 合并两个有序数组 难度&#xff1a;简单 文章目录 一、题目内容二、自己实现代码2.1 实现思路2.2 实现代码2.3 结果分析 三、 官方解法3.1 直接合并后排序3.1.1 算法实现3.1.2 代码实现3.1.3 代码分析 3.2 双指针3.2.1 算法实现3.2.2 代码实现3.2…

Android ViewModel实现和原理

ViewModel实现和原理 前言1. 使用1.1 gradle准备1.2 模拟场景1.3. LiveData和ViewModel1.4 更新数据 2. 原理与源码解读2.1 添加观察者2.2 setValue2.3 post 参考资料 前言 ViewModel的主要基于观察者的设计模式&#xff0c;他主要分为两个部分&#xff1a; 提供者Provider&a…

Codesys 获取系统年、月、日、时、分、秒、星期几 +解决时区问题+ ST语言编程实现代码

一、 效果如图所示 二、功能说明 发现获取的时间比北京时间多一个时区&#xff08;8个小时&#xff09;&#xff0c;解决时区问题获取时间后&#xff0c;单独把年月日时分秒提取出来&#xff0c;单独保存在变量中获取星期几&#xff0c;保存在变量中 三、Codesys用ST语言实现…

【MySQL统计函数count详解】

MySQL统计函数count详解 1. count()概述2. count(1)和count(*)和count(列名)的区别3. count(*)的实现方式 1. count()概述 count() 是一个聚合函数&#xff0c;返回指定匹配条件的行数。开发中常用来统计表中数据&#xff0c;全部数据&#xff0c;不为null数据&#xff0c;或…

【C++】模板初级

【C】模板初级 泛型编程函数模板函数模板的概念函数模板格式函数模板的原理函数模板的实例化模板参数的匹配原则 类模板类模板格式类模板的实例化 泛型编程 当我们之前了解过函数重载后可以知道&#xff0c;一个程序可以出现同名函数&#xff0c;但参数类型不同。 //整型 voi…

如何获得一个Oracle 23ai数据库(vagrant box)

准确的说&#xff0c;是Oracle 23ai Free Developer版&#xff0c;因为企业版目前只在云上&#xff08;OCI和Azure&#xff09;和ECC上提供。 前面我博客介绍了3种方法&#xff1a; Virtual ApplianceRPM安装Docker 今天介绍最近新出的一种方法&#xff0c;也是我最为推荐的…

如何使用任意浏览器远程访问本地搭建的Jellyfin影音平台

文章目录 前言1. Jellyfin服务网站搭建1.1 Jellyfin下载和安装1.2 Jellyfin网页测试 2.本地网页发布2.1 cpolar的安装和注册2.2 Cpolar云端设置2.3 Cpolar本地设置 3.公网访问测试4. 结语 前言 本文主要分享如何使用Windows电脑本地部署Jellyfin影音服务并结合cpolar内网穿透工…

Linux---系统的初步学习【项目一:Linux操作系统的安装与配置】

项目一 Linux操作系统的安装与配置 1.1 项目知识准备 1.1.1 操作系统是什么&#xff1f; ​ 操作系统&#xff08;Operating System&#xff0c;OS&#xff09;是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理硬件、决定程序运行的优先次序、管理文件系统等…

遗传算法浅理解

1. 什么是遗传算法&#xff1f; ​ 遗传算法&#xff0c;又称为 Genetic algorithm(GA)Genetic algorithm(GA)。其主要思想就是模拟生物的遗传与变异。它的用途非常广泛&#xff0c;可以用于加速某些求最大或者最小值的算法&#xff08;换句话说就是加速算法收敛&#xff0c;最…

月球全月地质图和4.5亿像素月面标注地图

嫦娥六号都在月球挖到土特产了&#xff0c;那你知道月球到底长什么样子吗&#xff1f; 现在我们就为你分享一下月球的全月地质图&#xff0c;以及4.5亿像素月面带标注的地图&#xff0c;你可以在文末查看该数据的领取方法。 月球全月地质图 对于月球的探索&#xff0c;美国和…

如何高效使用大型语言模型 LLMs 初学者版本 简单易上手

第一条也是最重要的一条规则是 永远不要要求LLM提供你无法自己验证的信息, 或让它完成你无法验证其正确性的任务。 唯一例外的情况是那些无关紧要的任务&#xff0c; 例如&#xff0c;让大型语言模型提供公寓装修灵感之类的是可以的 。 首先请看两个范例 不佳示范&#xff1a…

SAP 采购订单 价格 条件权限控制 授权账户

采购订单 价格 条件权限控制 授权账户 1、事务代码 me21/22/23/N 2、权限对像如下几个 M_BEST_BSA/EKG/EKO/WRK ACTVT 09 SELECT DISTINCT a.* FROM ( SELECT DISTINCT agr_users.uname FROM agr_1251INNER JOIN agr_users ON agr_1251.agr_name agr_users.agr_name AND…

智能制造uwb高精度定位系统模块,飞睿智能3厘米定位测距芯片,无人机高速传输

在科技日新月异的今天&#xff0c;定位技术已经渗透到我们生活的方方面面。从手机导航到自动驾驶&#xff0c;再到无人机定位&#xff0c;都离不开精准的定位系统。然而&#xff0c;随着应用场景的不断拓展&#xff0c;传统的定位技术如GPS、WiFi定位等&#xff0c;因其定位精度…