python之线程通过信号pyqtSignal刷新ui的方法

作者:yungcs_ 时间:2022-01-03 22:28:45 

第一部分:UI界面设计

界面效果图如下:

python之线程通过信号pyqtSignal刷新ui的方法

ui文件(可拉动控件自行创建一个button和text)


<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
 <rect>
 <x>0</x>
 <y>0</y>
 <width>585</width>
 <height>394</height>
 </rect>
</property>
<property name="windowTitle">
 <string>Dialog</string>
</property>
<widget class="QPushButton" name="pushButton">
 <property name="geometry">
 <rect>
  <x>230</x>
  <y>320</y>
  <width>75</width>
  <height>23</height>
 </rect>
 </property>
 <property name="text">
 <string>timer_click</string>
 </property>
</widget>
<widget class="QTextEdit" name="textEdit">
 <property name="geometry">
 <rect>
  <x>70</x>
  <y>30</y>
  <width>441</width>
  <height>231</height>
 </rect>
 </property>
</widget>
</widget>
<resources/>
<connections>
<connection>
 <sender>pushButton</sender>
 <signal>clicked()</signal>
 <receiver>Dialog</receiver>
 <slot>timer_click()</slot>
 <hints>
 <hint type="sourcelabel">
  <x>217</x>
  <y>229</y>
 </hint>
 <hint type="destinationlabel">
  <x>250</x>
  <y>241</y>
 </hint>
 </hints>
</connection>
</connections>
<slots>
<slot>timer_click()</slot>
</slots>
</ui>

生成的py文件


# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'TEST_QT_FROM.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
 def setupUi(self, Dialog):
   Dialog.setObjectName("Dialog")
   Dialog.resize(585, 394)
   self.pushButton = QtWidgets.QPushButton(Dialog)
   self.pushButton.setGeometry(QtCore.QRect(230, 320, 75, 23))
   self.pushButton.setObjectName("pushButton")
   self.textEdit = QtWidgets.QTextEdit(Dialog)
   self.textEdit.setGeometry(QtCore.QRect(70, 30, 441, 231))
   self.textEdit.setObjectName("textEdit")

self.retranslateUi(Dialog)
   self.pushButton.clicked.connect(Dialog.timer_click)
   QtCore.QMetaObject.connectSlotsByName(Dialog)

def retranslateUi(self, Dialog):
   _translate = QtCore.QCoreApplication.translate
   Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
   self.pushButton.setText(_translate("Dialog", "timer_click"))

第二部分:主要逻辑代码


from PyQt5 import QtWidgets, QtCore
from testqt.TEST_QT_FROM import Ui_Dialog
import sys
from PyQt5.QtCore import *
import time

# 继承QThread
class Runthread(QtCore.QThread):
 # python3,pyqt5与之前的版本有些不一样
 # 通过类成员对象定义信号对象
 _signal = pyqtSignal(str)

def __init__(self):
   super(Runthread, self).__init__()

def __del__(self):
   self.wait()

def run(self):
   print("run 666")
   self._signal.emit("run 666"); # 信号发送

class TestQtFromC(QtWidgets.QWidget, Ui_Dialog):
 text =""
 def __init__(self):
   super(TestQtFromC, self).__init__()
   self.setupUi(self)

#click
 def timer_click(self):
   self.thread = Runthread() # 创建线程
   self.thread._signal.connect(self.callbacklog) # 连接信号
   self.thread.start() # 开始线程

# callback
 def callbacklog(self, msg):
   self.text =self.text+time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime())+msg+ "\n"
   print(self.text)
   # 回调数据输出到文本框
   self.textEdit.setText(self.text);

if __name__ == "__main__":
 app = QtWidgets.QApplication(sys.argv)
 mTestQtFromC = TestQtFromC()
 mTestQtFromC.show()
 sys.exit(app.exec_())

第三部分:运行效果图

点击click就可刷新界面了

python之线程通过信号pyqtSignal刷新ui的方法

来源:https://blog.csdn.net/IKNOWNU/article/details/83790074

标签:python,pyqtSignal,ui
0
投稿

猜你喜欢

  • Python代码实现删除一个list里面重复元素的方法

    2022-06-02 15:31:02
  • Python 查看list中是否含有某元素的方法

    2023-07-29 21:46:08
  • Oracle Portal及其门户网站开发概述

    2010-07-20 13:30:00
  • Oracle11.2 命令行手工最简创建数据库的过程

    2009-09-14 12:07:00
  • 基于php+mysql的期末作业小项目(学生信息管理系统)

    2023-06-13 00:39:34
  • Python面向对象class类属性及子类用法分析

    2021-07-22 03:04:46
  • Python selenium把歌词评论做成词云图

    2022-12-29 10:17:35
  • sysbench-0.4.12编译安装和CPU测试例子分享

    2024-01-24 10:06:21
  • Python中的sys.stdout.write实现打印刷新功能

    2022-01-17 14:51:50
  • Vue2 模板template的四种写法总结

    2023-07-02 16:50:18
  • 还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)

    2023-12-26 21:32:41
  • php注册和登录界面的实现案例(推荐)

    2024-04-30 08:48:47
  • Mysql排序和分页(order by&limit)及存在的坑

    2024-01-20 04:55:28
  • Python时间序列缺失值的处理方法(日期缺失填充)

    2023-04-13 07:39:18
  • PyTorch实现卷积神经网络的搭建详解

    2021-03-12 16:36:03
  • python通过索引遍历列表的方法

    2021-07-06 06:06:53
  • 在django项目中导出数据到excel文件并实现下载的功能

    2023-09-10 08:31:43
  • 修改asp代码防止被杀毒软件误删

    2007-10-07 12:32:00
  • python Django框架快速入门教程(后台管理)

    2022-04-17 11:43:12
  • Django中实现点击图片链接强制直接下载的方法

    2023-08-03 13:29:19
  • asp之家 网络编程 m.aspxhome.com