python之线程通过信号pyqtSignal刷新ui的方法
作者:yungcs_ 时间:2022-01-03 22:28:45
第一部分: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就可刷新界面了
来源: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