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的几条建议分享
Feb 10 Python
详解Python中内置的NotImplemented类型的用法
Mar 31 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
Python基于scapy实现修改IP发送请求的方法示例
Jul 08 Python
利用python将图片转换成excel文档格式
Dec 30 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
详解React 元素渲染
2020/07/07 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
haskell实现多线程服务器实例代码
2013/11/26 Python
Python中pygame安装方法图文详解
2015/11/11 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
如何基于python实现脚本加密
2019/12/28 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
Yahoo-PHP面试题2
2014/12/06 面试题
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
小学生打架检讨书
2014/01/26 职场文书
经理助理岗位职责
2014/03/05 职场文书
基督教婚礼主持词
2014/03/14 职场文书
争做文明公民倡议书
2014/08/29 职场文书
法定代表人授权委托书
2014/09/19 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书