python pyqt5 qthread有哪些方法

python pyqt5 qthread有哪些方法,第1张

用例子说明吧,常用的不多

PyQt中的线程类 QtCoreQThread ,使用时继承QThread类

启动界面的线程暂称为UI线程。界面执行命令时都在自己的UI线程中。

如果在UI线程中执行网络连接和数据库 *** 作等耗时的 *** 作,界面会被卡住,Windows下有可能会出现“无响应”的警告。

阻塞UI线程会降低用户体验和应用稳定性。因此我们可以把耗时 *** 作放在线程中去执行。

QThread代表一个线程,我们可以复写run函数来执行我们要的 *** 作。

QThread可以使用 QtCorepyqtSignal 来与界面交互和传输数据。

PyQt4 QThread 代码示例

•Python27

# -- coding: utf-8 --

import sys

from PyQt4 import QtCore

from PyQt4QtCore import QCoreApplication

from PyQt4QtGui import QWidget, QPushButton, QApplication, QTextBrowser

class TimeThread(QtCoreQThread):

signal_time = QtCorepyqtSignal(str, int) # 信号

def __init__(self, parent=None):

super(TimeThread, self)__init__(parent)

selfworking = True

selfnum = 0

def start_timer(self):

selfnum = 0

selfstart()

def run(self):

while selfworking:

print "Working", selfthread()

selfsignal_timeemit("Running time:", selfnum) # 发送信号

selfnum += 1

selfsleep(1)

class TimeDialog(QWidget):

def __init__(self):

super(TimeDialog, self)__init__()

selftimer_tv = QTextBrowser(self)

selfinit_ui()

selftimer_t = TimeThread()

selftimer_tsignal_timeconnect(selfupdate_timer_tv)

def init_ui(self):

selfresize(300, 200)

selfsetWindowTitle('TimeDialog')

selftimer_tvsetText("Wait")

selftimer_tvsetGeometry(QtCoreQRect(10, 145, 198, 26))

selftimer_tvmove(0, 15)

btn1 = QPushButton('Quit', self)

btn1setToolTip('Click to quit')

btn1resize(btn1sizeHint())

btn1move(200, 150)

btn1clickedconnect(QCoreApplicationinstance()quit)

start_btn = QPushButton('Start', self)

start_btnsetToolTip("Click to start")

start_btnmove(50, 150)

selfconnect(start_btn, QtCoreSIGNAL("clicked()"), selfclick_start_btn)

def click_start_btn(self):

selftimer_tstart_timer()

def update_timer_tv(self, text, number):

selftimer_tvsetText(selftr(text + " " + str(number)))

if __name__ == '__main__':

app = QApplication(sysargv)

time_dialog = TimeDialog()

time_dialogshow()

sysexit(appexec_())

QThread中使用的信号 signal_time = QtCorepyqtSignal(str, int) 指定了参数str和int

发送信号 selfsignal_timeemit("Running time:", selfnum)

外部接收信号 selftimer_tsignal_timeconnect(selfupdate_timer_tv)

信号连接到方法 update_timer_tv(self, text, number) ,注意信号与方法的参数要一一对应

使用中我们可以定义多种不同的信号 QtCorepyqtSignal

启动线程,调用 start()

直接就在这里面写也可以的,不用调用。 网上多看Blog,博客园和CSDN上例子都有。 我花了一周自学搞定了一个跟你类似的小项目。 你一定要调用的话,import A from A这种就可以,参照: 如何调用另一个py文件中的类和函数

pylupdate的目录: Python\Scripts\pylupdate5exe

Qt Linguist的目录: Python\Lib\site-packages\pyqt5-tools\linguistexe

已经在上一节做过了:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10178110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存