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 相关文章推荐
python3图片转换二进制存入mysql
Dec 06 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
Python自定义简单图轴简单实例
Jan 08 Python
Python AES加密实例解析
Jan 18 Python
python中csv文件的若干读写方法小结
Jul 04 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
Pytorch之卷积层的使用详解
Dec 31 Python
python如何将图片转换素描画
Sep 08 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
10个顶级Python实用库推荐
Mar 04 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 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开发中的错误收集,不定期更新。
2011/02/03 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
Javascript的this详解
2019/03/23 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
python写入中英文字符串到文件的方法
2015/05/06 Python
python书籍信息爬虫实例
2018/03/19 Python
python3判断url链接是否为404的方法
2018/08/10 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
python实现简单flappy bird
2018/12/24 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
家长对孩子的评语
2014/04/18 职场文书
团日活动总结
2014/04/28 职场文书
离婚财产处理协议书
2014/09/30 职场文书
世界气象日活动总结
2015/02/27 职场文书
个人收入证明范本
2015/06/12 职场文书
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android