pyqt调用UI和开启子进程

news2024/11/16 12:52:43

UI制作

qrc

注意调用UI前把样式表里绑定的资源(qrc)转换成py导入进去

 xxx.qrc转xxx.py   两种方法

1命令

pyrcc5 -o icons_rc.py icons.qrc 

2外部工具pyrcc

实参

-o $FileNameWithoutExtension$.py $FileNameWithoutExtension$.qrc

sdz.qrc→→sdaz.py

在代码里写

import sdz

1.调用UI无交互函数

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5 import uic
from PyQt5.QtCore import Qt, QPoint
import sdz      #qrc转成的py
class DraggableWindow(QWidget):
    def __init__(self):
        super().__init__()
        uic.loadUi("./史迪仔.ui", self)   #保存的UI名
        # 设置窗口标志
        self.setWindowFlag(Qt.FramelessWindowHint)
        # 设置半透明背景
        self.setAttribute(Qt.WA_TranslucentBackground)
        # 记录鼠标按下的初始位置
        self.offset = QPoint()
    def mousePressEvent(self, event):
        # 记录鼠标按下的初始位置
        self.offset = event.pos()
    def mouseMoveEvent(self, event):
        # 移动窗口位置
        if event.buttons() == Qt.LeftButton:
            self.move(self.pos() + event.pos() - self.offset)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    # 创建可拖动窗口实例
    ui = DraggableWindow()
    # 显示窗口
    ui.show()
    # 启动应用程序事件循环
    sys.exit(app.exec_())

2.UI按钮绑定函数

pushButton_3在UI里查看

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5 import uic
from PyQt5.QtCore import Qt, QPoint
import sdz      #qrc转成的py
class guWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.gu=uic.loadUi("./史迪仔.ui", self)               #加载UI  命名self+任意
        an = self.gu.pushButton_3  # 按钮
        an.clicked.connect(self.gumou)  # 给按钮绑定函数

    # ✦✦✦✦✦✦✦✦✦✦设置无边框 和可拖动✦✦✦✦✦✦✦✦✦✦✦✦✦固定代码
        self.gu.setWindowOpacity(0.90)  # 设置窗口透明度
        self.gu.setWindowFlag(Qt.FramelessWindowHint)  # 去除边框
        self.gu.setAttribute(Qt.WA_TranslucentBackground)  # 去除白色背景

        self.offset = QPoint()     # 记录鼠标按下的初始位置
    def mousePressEvent(self, event):
        self.offset = event.pos()
    def mouseMoveEvent(self, event):
        if event.buttons() == Qt.LeftButton:
            self.move(self.pos() + event.pos() - self.offset)    # 移动窗口位置
    # ✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦

    def gumou(self):  # 按钮绑定的函数 功能
        print("顾某")
if __name__ == '__main__':
    app = QApplication(sys.argv)
    # 创建可拖动窗口实例
    ui = guWindow()        #函数
    # 显示窗口
    ui.show()
    # 启动应用程序事件循环
    sys.exit(app.exec_())

3.UI按钮绑定函数 开启子线程

在子线程运行期间 UI不卡顿

UI转换成py导入进去

 xxx.ui转xxx.py   两种方法

1.命令行

pyuic5 -o ui.py ui.ui

2.外部工具pyuic

-o $FileNameWithoutExtension$.py $FileNameWithoutExtension$.ui

调用UI 

sdz.ui已经转换为sdz.py

from sdz import Ui_Form   #UI  UI的主函数
class guWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.gu = Ui_Form()
        self.gu.setupUi(self)

任务栏图标LOGO

设置logo.qrc转为logo.py

logo.qrc里不要放其他东西

<RCC>
  <qresource>
    <file>123.ico</file>
  </qresource>
</RCC>

导入库

from PyQt5 import QtGui
import logo  #任务栏图标qrc
import ctypes#设置任务栏图标
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("com.example.myapp")

在主函数加上两行代码   ✦✦✦

if __name__ == '__main__':
    app = QApplication(sys.argv)
	
    icon = QtGui.QIcon(':/123.ico')    #✦✦✦
    app.setWindowIcon(icon)            #✦✦✦
	
    ui = guWindow()      

参数传递

在按钮绑定的函数中开始线程

    def gumou(self):  # 按钮绑定的函数 功能
        self.my_thread = MyThread(url)  # 创建线程
        self.my_thread.progress_updated.connect(self.update_progress)  # 连接数字信号
        self.my_thread.name_received.connect(self.receive_name)          # 连接文字信号
        self.my_thread.start()  # 开始线程
		

在进程中定义信号

class MyThread(QThread):
    progress_updated = pyqtSignal(int)    # 定义信号,传递 int 类型的参数
    name_received = pyqtSignal(str)       # 定义信号,传递 str 类型的参数
    def __init__(self,url):
        super().__init__()
        self.url = url                    #参数
    def run(self):
        try:

接收信号

    def receive_name(self, name):    #接收name
        self.gu.textBrowser.clear()
        self.gu.textBrowser.append(name)

    def update_progress(self, percent): #更新数字
        self.gu.progressBar.setValue(percent)

完整代码


import sys
from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import Qt, QPoint, QThread,pyqtSignal
from gui import Ui_Form   #UI
import sdz     #qrc生成的py #样式表
import logo  #任务栏图标
#设置任务栏图标
import ctypes
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("com.example.myapp")

#子线程下载
class MyThread(QThread):
    progress_updated = pyqtSignal(int)    # 定义信号,传递 int 类型的参数
    name_received = pyqtSignal(str)       # 定义信号,传递 str 类型的参数
    def __init__(self,url):
        super().__init__()
        self.url = url                    #参数
    def run(self):
        try:
            self.name_received.emit(code)        #发送获取信号
            self.progress_updated.emit(percent)  # 发送下载进度信号
        except :
            self.name_received.emit(f'错误')
class guWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.gu = Ui_Form()
        self.gu.setupUi(self)
        an = self.gu.pushButton_3  # 按钮
        self.gu.lineEdit.returnPressed.connect(self.gumou)    #lineEdit回车运行
        an.clicked.connect(self.gumou)  # 给按钮绑定函数
		self.user_name_qwidget = self.gu.lineEdit
		
        # ✦✦✦✦✦✦✦✦✦✦设置无边框 和可拖动✦✦✦✦✦✦✦✦✦✦✦✦✦固定代码
        self.setWindowOpacity(0.90)  # 设置窗口透明度
        self.setWindowFlag(Qt.FramelessWindowHint)  # 去除边框
        self.setAttribute(Qt.WA_TranslucentBackground)  # 去除白色背景
        self.offset = QPoint()     # 记录鼠标按下的初始位置
    def mousePressEvent(self, event):
        self.offset = event.pos()
    def mouseMoveEvent(self, event):
        if event.buttons() == Qt.LeftButton:
            self.move(self.pos() + event.pos() - self.offset)    # 移动窗口位置
			
    def gumou(self):  # 按钮绑定的函数 功能
        s = self.user_name_qwidget.text()
        url="开始"+s
        self.my_thread = MyThread(url)  # 创建线程
        self.my_thread.progress_updated.connect(self.update_progress)  # 连接数字信号
        self.my_thread.name_received.connect(self.receive_name)          # 连接文字信号
        self.my_thread.start()  # 开始线程
		
    def receive_name(self, name):    #接收name
        self.gu.textBrowser.clear()
        self.gu.textBrowser.append(name)

    def update_progress(self, percent): #更新数字
        self.gu.progressBar.setValue(percent)
		
if __name__ == '__main__':
    app = QApplication(sys.argv)
	
    icon = QtGui.QIcon(':/ks.png')
    app.setWindowIcon(icon)
	
    ui = guWindow()           # 创建窗口实例
    ui.show()                 # 显示窗口
    sys.exit(app.exec_())     # 启动应用程序事件循环

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

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

相关文章

Hyperledger Fabric 二进制安装部署 Peer 节点

规划网络拓扑 3 个 orderer 节点&#xff1b;组织 org1 , org1 下有两个 peer 节点&#xff0c; peer0 和 peer1; 组织 org2 , org2 下有两个 peer 节点&#xff0c; peer0 和 peer1; 节点宿主机 IPhosts端口cli192.168.1.66N/AN/Aorderer0192.168.1.66orderer0.example.com70…

前端面试题集合一

Canvas是什么&#xff1f;怎样写Canvas&#xff1f; Canvas是HTML5的一个元素&#xff0c;它使用JavaScript在网页上绘制图形。Canvas是一个矩形区域。它的每一个像素都可以由HTML5语言来控制。使用Canvas绘制路径、框、圆、字符和添加图像有几种方法。 如果要在我们的HTML文…

2024年跨境电商上半年有哪些营销节日?

2024年伊始&#xff0c;跨境电商开启新一轮的营销竞技&#xff0c;那么首先需要客户需求&#xff0c;节假日与用户需求息息相关&#xff0c;那么接下来小编为大家整理2024上半年海外都有哪些节日和假期&#xff1f;跨境卖家如何见针对营销日历选品&#xff0c;助力卖家把握2024…

Spring——Spring AOP1(代理模式Proxy)

代理&#xff08;Proxy&#xff09;模式 1.创建工程 2.代理&#xff08;Proxy&#xff09;模式介绍 作用&#xff1a;通过代理可以控制访问某个对象的方法&#xff0c;在调用这个方法前做前置处理&#xff0c;调用这个方法后做后置处理。&#xff08;即&#xff1a; AOP的微观…

Redis小计(4)

目录 1.Set和Get操作 2.mset和mget 3.mset&#xff0c;mget&#xff0c;set后加参数的优点 4.incr,incrby&#xff0c;incrbyfloat 1.Set和Get操作 flushall&#xff1a;清除所有k-v键值对。&#xff08;删库跑路小技巧&#xff09; set k v[ex | px]&#xff1a;设置超时…

Elementui Radio单选框取消选中

问题&#xff1a; 最近开发一个后台项目的时候用到了单选框&#xff0c;而客户的要求是默认选择一个选项&#xff0c;然后点击可以取消选中。不想自己在手写一个Radio组件&#xff0c;只能在elementui的单选框上修改一下下啦。 1. .native的作用 .native的作用是在给组件添加修…

低代码开发平台在工业领域的应用场景

随着科技的不断发展&#xff0c;低代码开发平台在工业场景中的应用越来越广泛。低代码开发平台通过提供可视化的界面和预构建的模块&#xff0c;使得开发人员能够快速地构建应用程序&#xff0c;而不需要编写大量的代码。这种技术的应用&#xff0c;不仅可以提高开发效率&#…

网络安全之你的浏览器记录真的安全吗?

密码是每个人最私密的东西&#xff0c;轻易是不会展示给他人的&#xff0c;那么我如何能知道你电脑上浏览器里保存的密码呢&#xff1f;浏览器是大家在网上冲浪最常用的软件&#xff0c;在登录一些网站填写账号密码后&#xff0c;浏览器为了方便大家使用&#xff0c;会提示是否…

ArrayList 与 LinkedList 区别?

如果你现在需要准备面试&#xff0c;可以关注我的公众号&#xff1a;”Tom聊架构“&#xff0c;回复暗号&#xff1a;”578“&#xff0c;领取一份我整理的50W字面试宝典&#xff0c;可以帮助你提高80%的面试通过率&#xff0c;价值很高&#xff01;&#xff01; 是否保证线程安…

「PyMuPDF 专栏 」PyMuPDF创建PDF、拆分PDF

文章目录 一、本章前言二、使用PyMuPDF创建PDF文档1、实例代码2、过程详解①. 安装PyMuPDF②. 导入PyMuPDF模块③. 创建一个新的PDF文档④. 添加页面和内容⑤. 保存文档 三、使用PyMuPDF拆分PDF文档1、实例代码2、过程解析①. 导入模块②. 定义函数③. 打开源PDF文件④. 遍历页…

openGauss学习笔记-189 openGauss 数据库运维-常见故障定位案例-TPCC-WAL-内存

文章目录 openGauss学习笔记-189 openGauss 数据库运维-常见故障定位案例-TPCC-WAL-内存189.1 TPCC运行时&#xff0c;注入磁盘满故障&#xff0c;TPCC卡住的问题189.1.1 问题现象189.1.2 原因分析189.1.3 处理分析 189.2 备机处于need repair(WAL)状态问题189.2.1问题现象189.…

jquery 合并table表格行或列

合并行 $("#tableId").find("tr").each(function(rowIndex) {var cells $(this).find("td");cells.each(function(cellIndex) {var cell $(this);var prevRowCell table.find("tr:eq(" (rowIndex - 1) ")").find(&quo…

CUDA:执行模型

SM 在SM中&#xff0c;共享内存和寄存器是非常重要的资源。共享内存被分配在SM上的常驻线程 块中&#xff0c;寄存器在线程中被分配。线程块中的线程通过这些资源可以进行相互的合作和通 信。 warp CUDA采用单指令多线程&#xff08;SIMT&#xff09;架构来管理和执行线程&am…

Agisoft Metashape 3D模型重建

Agisoft Metashape 3D模型重建 文章目录 Agisoft Metashape 3D模型重建前言一、添加照片二、对齐照片三、构建网格四、构建纹理五、导出模型六、上传数据前言 本文介绍利用Agisoft Metashape,构建3D模型的基本工作流程。下文以无人机单镜头防地飞行数据为例,通过Agisoft Met…

百川智能发布角色大模型 ,零代码复刻角色轻松满足游戏领域定制需求

2024年1月9日&#xff0c;百川智能发布角色大模型Baichuan-NPC&#xff0c;深度优化了“角色知识”和“对话能力”&#xff0c;使模型能够更好的理解上下文对话语义&#xff0c;更加符合人物性格地进行对话和行动&#xff0c;让角色栩栩如生。此外&#xff0c;对于游戏领域AI角…

Python - Bert-VITS2 自定义训练语音

目录 一.引言 二.前期准备 1.Conda 环境搭建 2.Bert 模型下载 3.预训练模型下载 三.数据准备 1.音频文件批量处理 2.训练文件地址生成 3.模型训练配置生成 4.训练文件重采样 5.Tensor pt 文件生成 四.模型训练 1.预训练模型 2.模型训练 3.模型收菜 五.总结 一…

Flask修改Response Headers中的Server值

Headers中的Server会暴露出Python版本&#xff0c;导致的结果就是方便被渗透快速定位Python版本后找到对应版本的漏洞&#xff0c;因此导致网络安全问题 伪方法&#xff1a; 像这个马上就暴露出Python版本&#xff0c;如何解决这个网络上有说直接用response.headers.remove(Ser…

STL标准库与泛型编程(侯捷)笔记6(完结)

STL标准库与泛型编程&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youbute: 侯捷-STL标准库与泛型编程 B站: 侯捷 - STL Github:STL源码剖析中源码 https://github.com/SilverMaple/STLSourceCo…

diffusers加速文生图速度;stable-diffusion、PixArt-α

参考: https://pytorch.org/blog/accelerating-generative-ai-3/ https://colab.research.google.com/drive/1jZ5UZXk7tcpTfVwnX33dDuefNMcnW9ME?usp=sharing#scrollTo=jueYhY5YMe22 大概GPU资源8G-16G;另外模型资源下载慢可以在国内镜像:https://aifasthub.com/ 1、加速…

RK3568上如何使用MPP进行硬解码

目录 前言正文一、FFmpeg 拉流处理二、RK3568 mpp硬解码1、简介2、普通mpp解码流程3、核心代码 END、总结的知识与问题1、一直出现jitter buffer full 这样的问题2、如何打印帧率&#xff1f;3、分析av_packet_alloc、av_init_packet、av_packet_unref、av_packet_free、av_fra…