当前位置: 首页 > wzjs >正文

方庄网站制作wordpress 阅后即焚

方庄网站制作,wordpress 阅后即焚,官方网站怎么写,贸易公司网站建设PyQt5 到 PySide6 技术栈转换详解 本项目最初使用 PyQt5 构建图形用户界面 (all_sensors_reader.py)。为了探索不同的 Qt for Python 绑定库,并利用 PySide6 可能带来的一些优势(例如更宽松的 LGPL 许可证),我们创建了一个功能相…

PyQt5 到 PySide6 技术栈转换详解

本项目最初使用 PyQt5 构建图形用户界面 (all_sensors_reader.py)。为了探索不同的 Qt for Python 绑定库,并利用 PySide6 可能带来的一些优势(例如更宽松的 LGPL 许可证),我们创建了一个功能相同但基于 PySide6 的版本 (all_sensors_reader_pyside.py)。
在这里插入图片描述

本文档详细介绍了从 PyQt5 迁移到 PySide6 的主要差异和修改点,并以本项目中的代码为例进行说明。

1. 包导入 (Package Imports)

最明显的变化是包名需从 PyQt5 替换为 PySide6

PyQt5 (all_sensors_reader.py):

import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,QHBoxLayout, QLabel, QPushButton, QComboBox,QGroupBox, QGridLayout, QTableWidget, QTableWidgetItem,QHeaderView, QMessageBox, QSplitter)
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QFont
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas

PySide6 (all_sensors_reader_pyside.py):

import sys
from PySide6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,QHBoxLayout, QLabel, QPushButton, QComboBox,QGroupBox, QGridLayout, QTableWidget, QTableWidgetItem,QHeaderView, QMessageBox, QSplitter)
from PySide6.QtCore import Qt, QTimer, Slot
from PySide6.QtGui import QFont
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg as FigureCanvas

主要修改: 将所有 PyQt5 替换为 PySide6,并根据需要导入 Slot

2. 信号和槽 (Signals and Slots)

信号连接方式在两者中一致,但 PySide6 推荐使用 @Slot() 装饰器标记槽函数,以提高可读性和类型安全性。

PyQt5 (all_sensors_reader.py):

class AllSensorsApp(QMainWindow):def __init__(self):self.refresh_button.clicked.connect(self.refresh_ports)self.connect_button.clicked.connect(self.connect_device)self.disconnect_button.clicked.connect(self.disconnect_device)self.auto_refresh_combo.currentIndexChanged.connect(self.set_auto_refresh)self.manual_refresh_button.clicked.connect(self.update_data)def refresh_ports(self):passdef connect_device(self):passdef set_auto_refresh(self, index):passdef update_data(self):pass

PySide6 (all_sensors_reader_pyside.py):

from PySide6.QtCore import Slotclass AllSensorsApp(QMainWindow):def __init__(self):self.refresh_button.clicked.connect(self.refresh_ports)self.connect_button.clicked.connect(self.connect_device)self.disconnect_button.clicked.connect(self.disconnect_device)self.auto_refresh_combo.currentIndexChanged.connect(self.set_auto_refresh)self.manual_refresh_button.clicked.connect(self.update_data)@Slot()def refresh_ports(self):pass@Slot()def connect_device(self):pass@Slot(int)def set_auto_refresh(self, index):pass@Slot()def update_data(self):pass

主要修改: 添加 @Slot() 装饰器,并为需要参数的槽函数指定类型(如 @Slot(int))。

3. 枚举 (Enums)

PySide6 对枚举访问路径要求更明确。

PyQt5 (all_sensors_reader.py):

splitter = QSplitter(Qt.Horizontal)
self.telemetry_table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch)
self.telemetry_table.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
self.telemetry_table.setEditTriggers(QTableWidget.NoEditTriggers)

PySide6 (all_sensors_reader_pyside.py):

splitter = QSplitter(Qt.Orientation.Horizontal)
self.telemetry_table.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch)
self.telemetry_table.horizontalHeader().setSectionResizeMode(1, QHeaderView.ResizeMode.Stretch)
self.telemetry_table.setEditTriggers(QTableWidget.EditTrigger.NoEditTriggers)

主要修改:

  • Qt.Horizontal -> Qt.Orientation.Horizontal
  • QHeaderView.Stretch -> QHeaderView.ResizeMode.Stretch
  • QTableWidget.NoEditTriggers -> QTableWidget.EditTrigger.NoEditTriggers

4. Matplotlib 后端 (Matplotlib Backend)

Matplotlib 后端需调整以兼容 PySide6。

PyQt5 (all_sensors_reader.py):

from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas

PySide6 (all_sensors_reader_pyside.py):

from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg as FigureCanvas

主要修改: 使用通用后端 backend_qtagg,兼容多种 Qt 绑定。

5. 应用程序执行 (exec_() vs exec())

主事件循环方法名有所不同。

PyQt5 (all_sensors_reader.py):

if __name__ == '__main__':app = QApplication(sys.argv)mainWin = AllSensorsApp()mainWin.show()sys.exit(app.exec_())

PySide6 (all_sensors_reader_pyside.py):

def main_gui():app = QApplication(sys.argv)mainWin = AllSensorsApp()mainWin.show()sys.exit(app.exec())if __name__ == '__main__':main_gui()

主要修改: app.exec_() 改为 app.exec(),符合 Python 3 的命名规范。

总结

从 PyQt5 到 PySide6 的迁移主要涉及包名替换、信号槽装饰器调整、枚举路径更新、Matplotlib 后端更换及 exec() 方法修改。两者的功能和性能差异不大,PySide6 的 LGPL 许可证为其在商业场景中提供了优势。


文章转载自:

http://eAGCKEYH.kxbdm.cn
http://sLw7jF0F.kxbdm.cn
http://7QKhr7rZ.kxbdm.cn
http://XB27Fo5Z.kxbdm.cn
http://LjGQgn5v.kxbdm.cn
http://mARUWgZT.kxbdm.cn
http://ZnSptHru.kxbdm.cn
http://LGgzacHp.kxbdm.cn
http://xj8UDKye.kxbdm.cn
http://TjfMAtY7.kxbdm.cn
http://ng4piHvB.kxbdm.cn
http://tHbqtQ5D.kxbdm.cn
http://DYlgwYOM.kxbdm.cn
http://BCNEexGX.kxbdm.cn
http://tKzzQFqU.kxbdm.cn
http://RKYmoN2P.kxbdm.cn
http://HgPCq4X5.kxbdm.cn
http://9zQH7uug.kxbdm.cn
http://VZJzqy7W.kxbdm.cn
http://MP7EbvfW.kxbdm.cn
http://dA3frM8K.kxbdm.cn
http://OGz5vUuj.kxbdm.cn
http://soSAuyt9.kxbdm.cn
http://OE2Qgy0I.kxbdm.cn
http://43wzqe4a.kxbdm.cn
http://2Pt97t43.kxbdm.cn
http://qLnhODHt.kxbdm.cn
http://LsC4RGDK.kxbdm.cn
http://9YS6jkoy.kxbdm.cn
http://HrPdw58j.kxbdm.cn
http://www.dtcms.com/wzjs/675177.html

相关文章:

  • 广州网站制作企业下载小程序
  • 专业公司网站建设服务公司中国发达国家
  • 0基础学习网站开发申请域名 建设网站
  • 电子商务网站建设清华大学健身器械网站建设案例
  • 青岛做网站优化个人网站的建设
  • 开平设计网站扬州大发网站建设
  • 网站跳出率 报告广告宣传语
  • 沈阳市于洪区建设局网站策划书模板
  • 特价网站建设费用简单的工作室网站模板
  • 新的网站建设一般多少钱画网页前端界面的软件
  • 佛山住房和城乡建设部网站购物网站建设与开发
  • 用vs session做网站查询域名
  • 郑州网站建设找伟置wordpress建哪些网站
  • 网站是什么公司做的wordpress app一键生成
  • 查询网站备案号appwordpress怎么安装访问
  • 汕头h5建站模板wordpress系列怎么做
  • 网站功能怎么写珠海高端网站建设公司
  • 公司官方网站建设雁塔网站建设
  • 用字母做logo的网站wordpress建企业网站设置
  • 做网站买一个域名就够了吗建设网站的意义作用是什么
  • 高埗仿做网站不上此网站枉做男人
  • 管理网站 开发吉安seo网站快速排名
  • 义乌市住房和城乡建设局网站lnmp安装wordpress限权
  • 吉安网站建设兼职北京住房和建设部网站首页
  • 网站建设资金预算广告制作公司网站
  • 网站开发网站开发自己接单做网站
  • 上海未来网站建设公司中国建设网官方网站e路护航
  • 佛山公司网站建设价格网站专题页面设计规范
  • 建设电商网站的个人心得网站域名.xin
  • 网站开发收税网页制作百度百科