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生成器的使用方法
Nov 21 Python
Django发送html邮件的方法
May 26 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
Django 前后台的数据传递的方法
Aug 08 Python
python学习基础之循环import及import过程
Apr 22 Python
详解Django中间件的5种自定义方法
Jul 26 Python
Python异常处理操作实例详解
Aug 28 Python
python进阶之自定义可迭代的类
Aug 20 Python
Python List列表对象内置方法实例详解
Oct 22 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
Jan 18 Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 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
php self,$this,const,static,->的使用
2009/10/22 PHP
php 团购折扣计算公式
2011/11/24 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
python实现电子词典
2020/04/23 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
python机器学习之神经网络(一)
2017/12/20 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
python自动下载图片的方法示例
2020/03/25 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
精选奢华:THE LIST
2019/09/05 全球购物
生产主管岗位职责
2013/11/10 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
学徒工职责
2014/03/06 职场文书
如何写好自荐信
2014/04/07 职场文书
留学生求职信
2014/06/03 职场文书