PyQt5多线程使用

PyQt5多线程使用

本案例使用PyQt5多线程实现一个UI界面同时显示3个时间实时更新控件,从而直观地了解到Qt多线程是如何进行工作的。

from PyQt5.QtCore import QThread,pyqtSignal,QDateTime
from PyQt5.QtWidgets import QApplication,QDialog,QLineEdit,QVBoxLayout
import time
import sys

class Thread1(QThread): #创建线程1的具体实现
    update_date=pyqtSignal(str)  #设置信号槽,发送符串参数
    def run(self):
        while True:
            data=QDateTime.currentDateTime()  #读取系统时间
            currentTime=data.toString("yyyy-MM-dd  hh:mm:ss")  #更改显示格式
            self.update_date.emit(str(currentTime))  #触发信号槽,发送一个字符串信号
            time.sleep(1) #设置休眠时间

class Thread2(QThread): #创建线程2的具体实现
    update_date=pyqtSignal(str)  #设置信号槽,发送字符串参数
    def run(self):
        while True:
            data=QDateTime.currentDateTime()  #读取系统时间
            currentTime=data.toString("yyyy-MM-dd  hh:mm:ss")  #更改时间显示格式
            self.update_date.emit(str(currentTime))  #触发信号槽,发送一个字符串信号
            time.sleep(2) #设置休眠时间

class Thread3(QThread): #创建线程3的具体实现
    update_date=pyqtSignal(str)  #设置信号槽,发送字符串参数
    def run(self):
        while True:
            data=QDateTime.currentDateTime()  #读取系统时间
            currentTime=data.toString("yyyy-MM-dd  hh:mm:ss")  #更改时间显示格式
            self.update_date.emit(str(currentTime))  #触发信号槽,发送一个字符串信号
            time.sleep(3) #设置休眠时间

class ThreadDialog(QDialog):#主窗口类
    def  __init__(self):
        QDialog.__init__(self)  #初始化
        self.setWindowTitle('Qt多线程') #设置窗口标题
        self.resize(400,100)  #设置窗口大小
        self.initUI()
        
    def initUI(self):
        self.lineEdit1 = QLineEdit(self)  # 创建QLineEdit1控件
        self.lineEdit2 = QLineEdit(self)  # 创建QLineEdit2控件
        self.lineEdit3 = QLineEdit(self)  # 创建QLineEdit3控件
        self.vbox = QVBoxLayout() # 创建垂直布局
        self.vbox.addWidget(self.lineEdit1) # 添加控件lineEdit1
        self.vbox.addWidget(self.lineEdit2) # 添加控件lineEdit2
        self.vbox.addWidget(self.lineEdit3) # 添加控件lineEdit3
        self.setLayout(self.vbox) # 设置本窗口布局为垂直布局
        self.thread1 = Thread1()  # 创建线程1
        self.thread2 = Thread2()  # 创建线程2
        self.thread3 = Thread3()  # 创建线程3
        self.thread1.update_date.connect(self.lineEditDisplay1)  # 线程1更新时间
        self.thread2.update_date.connect(self.lineEditDisplay2)  # 线程2更新时间
        self.thread3.update_date.connect(self.lineEditDisplay3)  # 线程3更新时间
        self.thread1.start()  # 启动线程1
        self.thread2.start()  # 启动线程2
        self.thread3.start()  # 启动线程3

    def lineEditDisplay1(self,data): #信号槽函数,接收字符串参数
        self.lineEdit1.setText(data)

    def lineEditDisplay2(self,data): #信号槽函数,接收字符串参数
        self.lineEdit2.setText(data)

    def lineEditDisplay3(self,data): #信号槽函数,接收字符串参数
        self.lineEdit3.setText(data)

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

QThread

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

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

相关文章

[Android]实现一个权限申请类

[Android]实现一个权限申请类 导言 在引入了动态权限申请之后,Android的权限申请就变得尤为繁琐,若是按照原有的方法一板一眼地进行申请,样板代码未免太多。因此本篇文章就使用ActivityResult API,来实现一个简单的权限申请类来帮…

【漏洞复现】Kubernetes PPROF内存泄漏漏洞(CVE-2019-11248)

Nx01 产品简介 Kubernetes(简称K8S)是Google在2014年开源的一个容器集群管理系统。它用于容器化应用程序的部署、扩展和管理,目标是让部署容器化应用简单且高效。 Nx02 漏洞描述 漏洞存在于Kubernetes的1.18.6版本之前,可能导致未…

「解析」Jetson配置 git服务

这两天感冒了在家休养,想着把之前买的 Jetson 开发板用起来,买Jetson的初衷就是用来学习Linux系统,顺道可以部署算法,以及一些其他需求,相比树莓派而言,Jetson开发相对更贵,但是其配备了英伟达的…

conda 安装, 配置以及使用

文章目录 1. 安装2. 配置2.1 如何配置2.2 快速设置取消自动进入 base 环境conda 添加清华源pip 添加清华源pip 更新为最新版本 3. 使用 conda 是 python 的环境管理工具包,非常好用,特别是 miniconda 相对于 conda 不需要安装其他的工具,而且…

详细讲解Python中的aioschedule定时任务操作

目录 前言1. 基本概念2. 基本API3. Demo 前言 如果下面的函数库无法执行,出现类似:(前提是python3.7以上) AttributeError: module ‘asyncio‘ has no attribute ‘run‘请检查run是否可跳转,如果无法跳转&#xff…

Jenkins实现基础CI操作配合python

条件: gitlab准备好 jenkins准备好 (不会java项目, 故跳过Maven打jar包) jenkins配置 在配置里通过插件Git Parameter配置Git,以便于从gitlab 拉去代码到Jenkins r容器内 /var/jenkins_home/ 刚接触python 项目好像不需要构建,直接推送到远…

深度学习弱光图像增强入门学习贴及相关可参考工作推荐

0 引言 先表明身份,在过去三年的时间里,发表弱光图像增强的SCI工作多篇,后续会在Github的代码库构建好之后,分享代码链接,欢迎关注(由于工作过于垃圾,因此咱还是以大佬的工作作为参考 首先&am…

推荐一款低成本半桥驱动器集成电路 SIC631CD-T1-GE3

SIC631CD-T1-GE3 是经过优化的集成功率级解决方案用于同步降压应用,提供大电流、高电压效率高,功率密度高。使电压调节器设计能够提供高达50 A的电流每相持续电流。内部功率MOSFET利用Vishay的最先进的第四代TrenchFET技术行业基准绩效将显著降低开关和传…

深入浅出Spring AOP

第1章:引言 大家好,我是小黑,咱们今天要聊的是Java中Spring框架的AOP(面向切面编程)。对于程序员来说,理解AOP对于掌握Spring框架来说是超级关键的。它像是魔法一样,能让咱们在不改变原有代码的…

XSS漏洞:prompt.mi靶场通关

xss系列往期文章: 初识XSS漏洞-CSDN博客 利用XSS漏洞打cookie-CSDN博客 XSS漏洞:xss-labs靶场通关-CSDN博客 目录 第0关 第1关 第2关 第3关 第4关 第5关 第6关 第7关 第8关 第9关 第A关 第B关 第C关 第D关 第E关 第F关 上一篇文章给…

c语言将csv文件中的XY轴数据转换为html波形图

目标: c语言实现一个最简化的csv转html波形图显示方案。 csv文件格式: 共两行数据,第一行是x轴数据,第二行是y轴数据。 csv文件名分为3段: 波形图名称,x轴名称,y轴名称。 c代码: int csv2html…

springboot集成shiro+前端vue,前后端分离项目遇到跨域以及sessionid拿不到等问题

近期在写前后端分离的项目,由于前后端分离导致原来使用的shiro配置无法满足现有系统要求。同时在前后端分离项目中存在的一些问题。例如,一些用户信息需要存储在后端方便进行安全性判断,但这些存储在后端的session前端却获取不到(…

开发知识点-java基础

java基础知识整理 windows 多版本java jar包不能直接打开 需要java -jar问题解决 windows 多版本 控制面板 java15 download 多版本 https://www.cnblogs.com/chenmingjun/p/9941191.html https://gitee.com/shixinke/JC-jEnv/repository/archive/master.zip java jar包不…

2024年AMC8历年真题练一练和答案详解(10),以及全真模拟题

六分成长继续为您分享AMC8历年真题,最后两天通过高质量的真题来体会快速思考、做对题目的策略。 题目从575道在线题库(来自于往年真题)中抽取5道题,每道题目均会标记出自年份和当年度的序号,并附上详细解析。【使用六…

CUDA tips

命令行查看核函数消耗的寄存器和共享内存数量 nvcc --ptxas-options-v reduce_sum.cu nvprof 使用 由于 8.0 及以上计算能力的显卡用不了 nvprof,官方建议用 nsight system 和 ncu,但是如果只想命令行打印表格查看 kernel 概况感觉还是 nvprof 方便&am…

三个方法解决pycharm中 ,alt +enter自动导入包的快捷键失效的问题

目录 1. 检查IDE设置:查看IDE的设置,确保自动导入包的功能是启用的 2. file>settings>keymap 里没有找到 alt enter 的快捷键 3. 按照网上教程说的如下选项勾上,也没用 4. 在右侧的General设置界面中,找到并点击Auto I…

YOLOv5改进 | 2023主干篇 | 多种轻量化卷积优化PP-HGNetV2改进主干(全网独家创新)

一、本文介绍 Hello,大家好,上一篇博客我们讲了利用HGNetV2去替换YOLOv5的主干,经过结构的研究我们可以发现在HGNetV2的网络中有大量的卷积存在,所以我们可以用一种更加轻量化的卷积去优化HGNetV2从而达到更加轻量化的效果(亲测优化后的HGNetV2网络比正常HGNetV2精度更高…

Mac OS系统 SVN客户端 smartSVN 安装和基础使用

一、下载SVN客户端 官网地址,可以根据自己的系统下载 https://www.smartsvn.com/download/ 二、安装客户端和激活 第一步安装,很简单。 第二步,激活,选择激活文件 创建一个许可文件,例如 smartSvn.license。 内容如…

RabbitMQ交换机(1)

1.交换机Exchange RabbitMQ消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。 相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单&am…

PDF有编辑密码怎么办

目录 注意: windows方法: 1 python 下载 2 打开命令行 3 安装 pikepdf 4 编写python脚本 5 使用py脚本 6解密完成 Linux方法: 注意: 此方法可以用于破解PDF的编辑密码,而不是PDF的打开密码 当遇到类似如下问…