一个pyqt5动态加载ui+多线程+信号刷新界面的例子

更新时间:2023-07-14 03:36:04 阅读: 评论:0

⼀个pyqt5动态加载ui+多线程+信号刷新界⾯的例⼦⼀个pyqt5动态加载ui+多线程+信号刷新界⾯的例⼦
ui代码(⽤designer设计⽣成即可)
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>全国富婆通讯录</string>
</property>
<widget class="QWidget" name="formLayoutWidget">
<property name="geometry">
<rect>
<x>90</x>
<y>40</y>
<width>211</width>
<height>141</height>
</rect>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit"/>难受的近义词
</item>
大同大学学报
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>开始寻找富婆:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>开始</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>停⽌</string>
中老年人奶粉
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>
将ui⽂件转换成py类后如下:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'main.ui'
#发财语录
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def tupUi(lf, Form):
Form.tObjectName("Form")
案牍
lf.formLayoutWidget = QtWidgets.QWidget(Form)
lf.formLayoutWidget.tGeometry(QtCore.QRect(90, 40, 211, 141))
lf.formLayoutWidget.tObjectName("formLayoutWidget")
lf.formLayout = QtWidgets.QFormLayout(lf.formLayoutWidget)
lf.formLayout.tContentsMargins(0, 0, 0, 0)
lf.formLayout.tObjectName("formLayout")
lf.lineEdit = QtWidgets.QLineEdit(lf.formLayoutWidget)
lf.lineEdit.tObjectName("lineEdit")
lf.formLayout.tWidget(0, QtWidgets.QFormLayout.FieldRole, lf.lineEdit)
取消的英文lf.label = QtWidgets.QLabel(lf.formLayoutWidget)
lf.label.tObjectName("label")眼角痒是什么原因
lf.formLayout.tWidget(0, QtWidgets.QFormLayout.LabelRole, lf.label)
lf.pushButton = QtWidgets.QPushButton(lf.formLayoutWidget)
lf.pushButton.tObjectName("pushButton")
lf.formLayout.tWidget(2, QtWidgets.QFormLayout.LabelRole, lf.pushButton)
lf.pushButton_2 = QtWidgets.QPushButton(lf.formLayoutWidget)
lf.pushButton_2.tObjectName("pushButton_2")
潮英文lf.formLayout.tWidget(2, QtWidgets.QFormLayout.FieldRole, lf.pushButton_2)
tSlotsByName(Form)
def retranslateUi(lf, Form):
_translate = anslate
Form.tWindowTitle(_translate("Form", "全国富婆通讯录"))
lf.label.tText(_translate("Form", "开始寻找富婆:"))
lf.pushButton.tText(_translate("Form", "开始"))
lf.pushButton_2.tText(_translate("Form", "停⽌"))
运⾏代码如下:
import random
import time
from threading import Thread
import null as null
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QApplication, QWidget
from ui.main import Ui_Form
class MainWindow(QWidget):
signal1 = pyqtSignal(str, str)  # 定义带类型参数信号
stopSign = 0
thread = null
woman = ["桂花", "翠花", "桂英", "桂凤", "翠芬", "桂兰", "红梅", "腊梅", "⽉红", "⽉英", "⽟兰", "⽟芝", "⼩兰", "蓉芳", "兰芳", "彩凤", "嫦娟", "招娣", "引娣"]
def__init__(lf):
super().__init__()
lf.ui = Ui_Form()
lf.ui.tupUi(lf)
str = "string"
lf.ui.t(lambda: lf.startThread(str))
lf.ui.pushButton_t(lf.stopThread)
t(lf.updateview)
def startThread(lf, str):
lf.stopSign = 0  # 关闭线程关闭标识
print(str)
text = lf.()
if (lf.thread != null and lf.thread.isAlive()):
return# 不重复开启线程
lf.thread = Thread(target=lf.threadSend,
args=(text,)  # 元组
)
lf.thread.start()
def stopThread(lf):  # 停⽌⼦线程
# lf.thread.join() #这个⽅法的意思是阻塞其他线程包括主线程,专注于运⾏⼦线程的任务,直⾄⼦线程完成        lf.stopSign = 1  # 打开线程关闭标识
lf.thread.join()
def threadSend(lf, text):  # 开启⼦线程,不阻塞主线程
while (lf.stopSign == 0):
time.sleep(0.1)
item = lf.woman[random.randint(0, 18)]
it(item, text)  # ⼦线程不直接更新页⾯,发送信号让主线程去更新
def updateview(lf, item, text):  # 更新页⾯执⾏
lf.ui.lineEdit.tText(text + "+" + item)
app = QApplication([])
stats = MainWindow()
stats.show()
<_()
运⾏效果如下:

本文发布于:2023-07-14 03:36:04,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1080691.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:线程   信号   主线
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图