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 切片和range()用法说明
Mar 24 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
python3读取MySQL-Front的MYSQL密码
May 03 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
使用Python横向合并excel文件的实例
Dec 11 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 Python
Python程序控制语句用法实例分析
Jan 14 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
python Gabor滤波器讲解
Oct 26 Python
python获取对象信息的实例详解
Jul 07 Python
python中 Flask Web 表单的使用方法
May 20 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判断是否为json格式的方法
2014/03/04 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
BootStrap selectpicker
2016/06/20 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
Numpy数据类型转换astype,dtype的方法
2018/06/09 Python
python实现列表的排序方法分享
2019/07/01 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
为什么会有内存对齐
2016/10/10 面试题
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
行政助理求职自荐信
2013/10/26 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
煤矿安全保证书
2015/02/27 职场文书
实习生辞职信范文
2015/03/02 职场文书
入党积极分子群众意见
2015/06/01 职场文书
生日祝酒词大全
2015/08/10 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
Java实现多文件上传功能
2021/06/30 Java/Android
HTTP中的Content-type详解
2022/01/18 HTML / CSS