python线程槽函数 python结束线程

python pyqt5 自定义信号和槽

"""

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比三都网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式三都网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖三都地区。费用合理售后完善,十载实体公司更值得信赖。

【简介】

内置信号槽示例

"""

from PyQt5.QtCore import QObject, pyqtSignal

class QTypeSignal(QObject):

# 定义一个信号

sendmsg = pyqtSignal(object)

class QTypeSlot(QObject):

def init (self):

super(QTypeSlot, self). init ()

if name == ' main ':

send = QTypeSignal()

slot = QTypeSlot()

# 1

print('--- 把信号绑定到槽函数 ---')

send.sendmsg.connect(slot.get)

send.run()

from PyQt5.QtCore import QObject , pyqtSignal

class QTypeSignal(QObject):

#定义一个信号

sendmsg = pyqtSignal( str,str)

class QTypeSlot(QObject):

def init ( self):

super( QTypeSlot, self). init ()

if name == ' main ':

send = QTypeSignal()

slot = QTypeSlot()

python线程间通信的问题,回答有加分!300

pyqt的线程之间的通信是通过信号to槽来实现的,首先你在线程类里面声明一个全局槽比如:

class imThread(QtCore.QThread):

imslot = QtCore.pyqtSignal()

这里是要重点注意,上面的是没有任何参数的一个信号,如果你需要参数的话,你可以在里面添加参数类型,例如:

imslot1 = QtCore.pyqtSignal(str)    #这是一个带字符串参数的信号

imslot2 = QtCore.pyqtSignal(int)    #这是一个带整型参数的信号

imslot3 = QtCore.pyqtSignal(bool)   #这是一个带布尔参数的信号

当然了,如果你需要多个参数的话,同样地往里面加就是了,qt也没有要求参数必须是同类型的,所以可以这样:

imslot1 = QtCore.pyqtSignal(str, int)    #这是一个带整型和字符串的参数信号

imslot2 = QtCore.pyqtSignal(int, str, str)    #这是一个带整型和两个字符串的参数信号

imslot3 = QtCore.pyqtSignal(bool, str) #这是一个带布尔和字符串的参数信号

在线程的run方法里面来定义执行信号:

self.imslot.emit()

这里也是需要重点注意的是,上面这个接口是没有参数的,如果你是要参数的话,是需要这样写:

self.imslot1[str].emit('hello')

self.imslot2[int].emit(1)

self.imslot3[bool].emit(False)

多参数的是这样

self.imslot1[str, int].emit('hello', 1)

self.imslot2[int, str, str].emit(1, "hello", "world")

self.imslot3[bool, str].emit(False, 'hello')

以上就是在线程类里面完成信号定义了,接下来就是逻辑层成定义一个函数槽来连接线程类里面的信号,这个也很简单,比如我在主线程类里面定义一个方法:

def imSlot():

print 'ok'

以上这个是槽函数,接下来是实现信号槽的连接

imThread.imslot.connect('imSlot')

这个就是信号槽的连接方式,当然了,这个是没有参数的一个信号槽,那么带参数的怎么写呢?也很简单!首先定义一个槽函数:

def imSlot(para):

print para

这个是带参数的槽函数,下面是:

imThread.imslot[str].connect('imSlot')

以上就是线程之间的方法了,子线程在执行的通行经过执行信号的话,子线程可以安全地执行而不会出现GUI主线程卡死的情况了。

请问Python如何创建有限线程来处理函数?

使用线程池:threadpool 模块。这是一个第三方模块,可以通过下面方法安装:

easy_install threadpool


分享标题:python线程槽函数 python结束线程
文章网址:http://scyanting.com/article/dosdshp.html