PyQt5及PySide2总结

news2024/9/23 17:13:28

PyQt5

1. 通过UIC转换成python代码后需在文件中直接添加即可运行。

  • 方便使用代码补全
  • 但每次改动ui会生成在原文件中,不小心会发生覆盖,每次都需要将之前的代码重新补充到新生成的文件中。
from PyQt5 import QtCore, QtGui, QtWidgets
if __name__ == "__main__":
    import sys
    my_app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_Form()   # 此处为代码中类的名称
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(my_app.exec_())

2. 不转换成python代码,直接加载ui文件

  • 代码无法自动补全
  • 每次对ui的修改直接保存即可,不需要转换文件,非常方便
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication

class Stats:

    def __init__(self):
        # 从文件中加载UI定义
        self.ui = uic.loadUi("main.ui")

app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec_()   #事件处理循环

3. 转化后进行类的继承

  • 代码可以自动补全
  • 每次需转换一下文件,但不需要对生成的文件修改
  • 推荐
from PyQt5.QtWidgets import QApplication, QMainWindow
from XXX(转化后的文件) import Ui_Form

class Stats(QMainWindow):
# 注意 这里选择的父类 要和UI文件窗体一样的类型
# 主窗口是 QMainWindow, 表单是 QWidget, 对话框是 QDialog
    def __init__(self):
        super().__init__()
        # 使用ui文件导入定义界面类
        self.ui = Ui_Form()
        # 初始化界面
        self.ui.setupUi(self)

app = QApplication([])
mainw = Stats()
mainw.show()
app.exec_()

Pyside2

  1. 不转换成python代码
from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtUiTools import QUiLoader

class Stats:

    def __init__(self):
        # 注意:里面的控件对象也成为窗口对象的属性了
        # 比如 self.ui.button, self.ui.textEdit
        self.ui = QUiLoader().load('main.ui')

显示图片

  • 选择Label控件,并打对勾,可以进行尺寸自动缩放
  • 在这里插入图片描述
self.ui.video_label.setPixmap(QtGui.QPixmap("test.jpg"))

显示视频

  • 无声视频也可以用Label控件
import cv2
import threading
from PyQt5.QtGui import QImage, QPixmap

def __init__(self):
     self.ui.Open.clicked.connect(self.video_show)
     self.ui.Close.clicked.connect(self.close)

     # 创建一个关闭事件并设为未触发
     self.stopEvent = threading.Event()
     self.stopEvent.clear()
     
def video_show(self):
     #self.fileName, self.fileType = QFileDialog.getOpenFileName(self.ui, 'Choose file', '', '*.mp4')
     self.cap = cv2.VideoCapture("test.mp4")
     self.frameRate = self.cap.get(cv2.CAP_PROP_FPS)
     th = threading.Thread(target=self.Display)
     th.start()

 def Close(self):
     # 关闭事件设为触发,关闭视频播放
     self.stopEvent.set()

 def Display(self):
     self.ui.Open.setEnabled(False)
     self.ui.Close.setEnabled(True)

     while self.cap.isOpened():
         success, frame = self.cap.read()
         # RGB转BGR
         frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
         img = QImage(frame.data, frame.shape[1], frame.shape[0], QImage.Format_RGB888)
         self.ui.video_label.setPixmap(QPixmap.fromImage(img))


         cv2.waitKey(int(1000 / self.frameRate))

         # 判断关闭事件是否已触发
         if True == self.stopEvent.is_set():
             # 关闭事件置为未触发,清空显示label
             self.stopEvent.clear()
             self.ui.video_label.clear()
             self.ui.Close.setEnabled(False)
             self.ui.Open.setEnabled(True)
             break

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

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

相关文章

向量相关的计算

点乘 线的表示 向量在某方向的投影 点与平面的关系 (有符号的距离也可以用来做碰撞检测) 粒子碰撞 叉乘 表示三角形法向量和三角形面积大小 注意:法向量和顶点索引的顺序有关(如果符合右手坐标系,且逆时针为正面…

Jvm对象回收算法-JVM(九)

上篇文章介绍了jvm运行时候对象进入老年代的场景,以及如何避免频繁fullGC。 Jvm参数设置-JVM(八) 老年代分配担保机制 这个机制的目的是为了提升效率,在minorGC之前,会有三次判断,之后再次minorGC速度会…

Python开发项目基于改进高斯混合模型的图割算法

博主介绍:擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例…

实体门店数字化转型应该注意什么?数字化门店如何做?

​当今越来越多得商家都在打造自己得数字化门店,线上经营已经成为时代的必选题,那么数字化门店都有什么优势呢? 1、线上门店的展示 使客户可以在数字门店的线上平台上进入商家的线上商城,查看和浏览门店的品牌信息和活动&#x…

jpg文件怎么压缩到最小?如何对图片进行压缩?

在日常社交聊天中,我们经常会遇到图片或表情包太大无法发送的情况,这时候我们可以通过jpg压缩(https://www.yasuotu.com/jpg)缩小图片kb,如果不想下载软件,可以选择使用浏览器在线图片压缩,下面…

iview的表格行内编辑,input和select组件使用方向键切换输入

如果表格中的输入框和下拉框需要实现方向键切换选择,效果如图: 使用的是IView的UI框架和Vue2,核心是在输入框和下拉框上添加按键监听事件,监听按键对应方向应该要完成的操作,比如当前在Name列的第一行,按【…

C++之非const转const类型(一百五十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

QT-qcustomplot应用示例

QT-qcustomplot应用示例 前言一、演示效果二、关键程序三、资源链接 前言 提供曲线显示示例过程 一、演示效果 二、关键程序 // 生成曲线图 void QtWidgetsApplication1::setupQuadratic() {if (m_strViewMachineIndexList.size() < 0)return;// 进度条默认0ui.progressB…

能源在线监测管理系统平台

能源在线监测管理系统平台是一种集能源数据采集、处理、分析、展示和管理于一体的综合性平台。该平台通过现代信息技术手段&#xff0c;对企业、机构或个人的能源消耗、能源质量、能源成本等方面进行实时监测和管理&#xff0c;为企业和政府部门的能源管理和决策提供有力支持。…

【语音处理】基于加权压力匹配方法(WPMM)的私人声音系统研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

lammps教程:ovito转换data文件格式的方法

我是小马老师&#xff0c;本文与你分享一些关于lammps data文件格式转换的技巧和经验。 lammps是一个高度可定制的分子动力学模拟软件&#xff0c;它提供了丰富的功能和灵活的输入文件格式。其中&#xff0c;data文件是lammps中最常用的输入文件之一&#xff0c;用于描述模拟系…

Epoll 到底是什么?“不” 简单的网络I/O模型?

1 简介 Epoll 是个很老的知识点&#xff0c;是后端工程师的经典必修课。这种知识具备的特点就是研究的人多&#xff0c;所以研究的趋势就会越来越深。当然分享的人也多&#xff0c;由于分享者水平参差不齐&#xff0c;也产生的大量错误理解。 今天我再次分享 epoll&#xff0…

USB转GSM模块发送中英文测试

目录 使用模块前注意事项模块测试发送英文短信发送中文短信手机收到短信页面常见问题 总结 使用模块前注意事项 使用USB转GSM模块要 注意 两点: 1.所在地要有2G基站,因为这是2G信号产品。 2.最好使用移动卡&#xff0c;有些地方电信和联通卡无法使用。 模块测试 这里介绍模块…

在安卓手机搭建kali环境,手机变成便携式渗透神器

简介 kali是著名的黑客专用系统&#xff0c;一般都是直接装在物理机或者虚拟机上&#xff0c;我们可以尝试把kali安装在手机上&#xff0c;把手机打造成一个便携式渗透神器。 我们需要下载以下3款软件&#xff1a; (1).Termux(终端模拟器) (2).AnLinux(里边有各种安装liunx…

GPT时代,寻找讯飞星火大模型的算力支点

作者 | 辰纹 来源 | 洞见新研社 大模型的“涌现”还在持续。 5月底举行的中关村论坛上&#xff0c;有专家披露&#xff0c;中国10亿级参数规模以上的大模型已经发布了79个&#xff0c;刚刚结束的世界人工智能大会上&#xff0c;又有一批大模型批量发布。 大模型的热度居高不…

华大HC32F460 TCP Server实验

目录 1.实验目标 2.实验准备 3.主流程图 4.驱动代码 5.实验步骤 1.实验目标 本实验使用W5500服务器功能&#xff0c;通过串口实现与本地客户端透传数据。 2.实验准备 硬件搭建&#xff1a;ZW-HC32F460-BZ标准版开发板1套 软件搭建&#xff1a;MDK5.22 3.主流程图 4.驱动…

css实现按钮圆角渐变样式

最终成果图&#xff1a; 背景&#xff1a; 最近项目数据大屏这个样式给我卡住了&#xff0c;起因是UI设计想要按钮边框渐圆角背景透明渐变&#xff0c;我查找了好多资料也在问答里提问&#xff0c;都没有实现初始样式。原因是如果想用渐变边框就会使用到属性border-image&#…

在Microsoft Excel中带单位的数字如何求和

使用 Excel 中的 SUM 函数对一系列单元格、整列或非连续单元格求和。要创建出色的 SUM 公式&#xff0c;请将 SUM 函数与其他 Excel 函数结合使用&#xff0c;然而 SUM 函数不能直接对带单位的数字进行求和。 当直接相加带单位的几个数字会出现如下错误&#xff1a; 错误的原因…

811. 交换数值

链接&#xff1a; https://www.acwing.com/problem/content/813/ 题目&#xff1a; 输入两个整数 xx 和 yy&#xff0c;请你编写一个函数, 交换两个整数的数值并输出交换后的 xx 和 yy。 C中的格式为&#xff1a;void swap(int &x, int &y)。 Java中的格式为&#xff1…