python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例


Posted in Python onMarch 08, 2020

PyQt5简单多线程信号与槽的使用

最简单的多线程使用方法是利用QThread函数,展示QThread函数和信号简单结合的方法

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Main(QWidget):
  def __init__( self, parent=None ):
    super(Main, self).__init__(parent)
    #创建一个线程实例并设置名称 变量 信号与槽
    self.thread = MyThread()
    self.thread.setIdentity('thread1')
    self.thread.sinOut.connect(self.outText)
    self.thread.setVal(6)
  #打印输出文本
  def outText( self, text ):
    print(text)
class MyThread(QThread):
  #自定义信号参数为str类型
  sinOut = pyqtSignal(str)
  def __init__( self, parent=None ):
    super(MyThread, self).__init__(parent)
    #初始化名称为空
    self.identity = None
  def setIdentity( self, text ):
    #设置多线程名称
    self.identity=text
  def setVal( self, val ):
    #接受数据,运行多线程
    self.times = int(val)
    self.run()
  def run( self ):
    #当次数大于0以及名称不为空时执行代码
    while self.times>0 and self.identity:
      #发射信号,触发打印函数,次数-1
      self.sinOut.emit(self.identity+'==>'+str(self.times))
      self.times-=1
if __name__ == '__main__':
  app=QApplication(sys.argv)
  main=Main()
  main.show()
  sys.exit(app.exec_())

运行如下

python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例

主线程与子线程的使用

有时候在开发程序时会经常执行一些耗时的操作,这样就会导致界面卡顿,这也是多线程的应用范围之一,这样我们就可以创建多线程,使用主线程更新界面,使用子线程后台处理数据,最后将结果显示在界面上

import sys,time
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class BackQthread(QThread):
  #自定义信号为str参数类型
  update_date=pyqtSignal(str)
  def run( self ):
    while True:
      #获得当前系统时间
      data=QDateTime.currentDateTime()
      #设置时间显示格式
      curTime=data.toString('yyyy-MM-dd hh:mm:ss dddd')
      #发射信号
      self.update_date.emit(str(curTime))
      #睡眠一秒
      time.sleep(1)
class window(QDialog):
  def __init__(self):
    super(window, self).__init__()
    #设置标题与初始大小
    self.setWindowTitle('PyQt5界面实时更新的例子')
    self.resize(400,100)
    #实例化文本输入框及其初始大小
    self.input=QLineEdit(self)
    self.input.resize(400,100)
    self.initUI()
  def initUI( self ):
    #实例化对象
    self.backend=BackQthread()
    #信号连接到界面显示槽函数
    self.backend.update_date.connect(self.handleDisplay)
    #多线程开始
    self.backend.start()
  def handleDisplay( self,data ):
    #设置单行文本框的文本
    self.input.setText(data)
if __name__ == '__main__':
  app=QApplication(sys.argv)
  win=window()
  win.show()
  sys.exit(app.exec_())

运行程序,效果如下

python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例

本文主要讲解了PyQt5多线程中信号与槽的详细使用方法与实例,更多关于PyQt5信号与槽的知识请查看下面的相关链接

Python 相关文章推荐
python ElementTree 基本读操作示例
Apr 09 Python
Python利用pyHook实现监听用户鼠标与键盘事件
Aug 21 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
Django日志模块logging的配置详解
Feb 14 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
python之django母板页面的使用
Jul 03 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
关于python中密码加盐的学习体会小结
Jul 15 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
给 TensorFlow 变量进行赋值的方式
Feb 10 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
在echarts中图例legend和坐标系grid实现左右布局实例
May 16 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 #Python
python输出第n个默尼森数的实现示例
Mar 08 #Python
Tensorflow之梯度裁剪的实现示例
Mar 08 #Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 #Python
Django 自定义404 500等错误页面的实现
Mar 08 #Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 #Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 #Python
You might like
农民C键的运用技巧
2020/03/04 星际争霸
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
php随机输出名人名言的代码
2012/10/07 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
繁简字转换功能
2006/07/19 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
javascript 页面只自动刷新一次
2009/07/10 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
webpack打包多页面的方法
2018/11/30 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
Python用模块pytz来转换时区
2016/08/19 Python
Python Socket传输文件示例
2017/01/16 Python
深入理解Python对Json的解析
2017/02/14 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
python文字转语音实现过程解析
2019/11/12 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
廉政教育心得体会
2014/01/01 职场文书
学雷锋演讲稿
2014/03/04 职场文书
分居协议书范本
2014/11/03 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
初中优秀学生评语
2014/12/29 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
Python中可变和不可变对象的深入讲解
2021/08/02 Python
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
Python加密与解密模块hashlib与hmac
2022/06/05 Python