"""
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比三都網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式三都網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋三都地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
【簡介】
內(nèi)置信號槽示例
"""
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('--- 把信號綁定到槽函數(shù) ---')
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()
pyqt的線程之間的通信是通過信號to槽來實現(xiàn)的,首先你在線程類里面聲明一個全局槽比如:
class?imThread(QtCore.QThread):
imslot?=?QtCore.pyqtSignal()
這里是要重點注意,上面的是沒有任何參數(shù)的一個信號,如果你需要參數(shù)的話,你可以在里面添加參數(shù)類型,例如:
imslot1?=?QtCore.pyqtSignal(str)????#這是一個帶字符串參數(shù)的信號
imslot2?=?QtCore.pyqtSignal(int)????#這是一個帶整型參數(shù)的信號
imslot3?=?QtCore.pyqtSignal(bool)???#這是一個帶布爾參數(shù)的信號
當(dāng)然了,如果你需要多個參數(shù)的話,同樣地往里面加就是了,qt也沒有要求參數(shù)必須是同類型的,所以可以這樣:
imslot1?=?QtCore.pyqtSignal(str,?int)????#這是一個帶整型和字符串的參數(shù)信號
imslot2?=?QtCore.pyqtSignal(int,?str,?str)????#這是一個帶整型和兩個字符串的參數(shù)信號
imslot3?=?QtCore.pyqtSignal(bool,?str)?#這是一個帶布爾和字符串的參數(shù)信號
在線程的run方法里面來定義執(zhí)行信號:
self.imslot.emit()
這里也是需要重點注意的是,上面這個接口是沒有參數(shù)的,如果你是要參數(shù)的話,是需要這樣寫:
self.imslot1[str].emit('hello')
self.imslot2[int].emit(1)
self.imslot3[bool].emit(False)
多參數(shù)的是這樣
self.imslot1[str,?int].emit('hello',?1)
self.imslot2[int,?str,?str].emit(1,?"hello",?"world")
self.imslot3[bool,?str].emit(False,?'hello')
以上就是在線程類里面完成信號定義了,接下來就是邏輯層成定義一個函數(shù)槽來連接線程類里面的信號,這個也很簡單,比如我在主線程類里面定義一個方法:
def?imSlot():
print?'ok'
以上這個是槽函數(shù),接下來是實現(xiàn)信號槽的連接
imThread.imslot.connect('imSlot')
這個就是信號槽的連接方式,當(dāng)然了,這個是沒有參數(shù)的一個信號槽,那么帶參數(shù)的怎么寫呢?也很簡單!首先定義一個槽函數(shù):
def?imSlot(para):
print?para
這個是帶參數(shù)的槽函數(shù),下面是:
imThread.imslot[str].connect('imSlot')
以上就是線程之間的方法了,子線程在執(zhí)行的通行經(jīng)過執(zhí)行信號的話,子線程可以安全地執(zhí)行而不會出現(xiàn)GUI主線程卡死的情況了。
使用線程池:threadpool 模塊。這是一個第三方模塊,可以通過下面方法安裝:
easy_install threadpool
本文題目:python線程槽函數(shù) python結(jié)束線程
分享URL:http://jinyejixie.com/article48/dosdshp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、建站公司、服務(wù)器托管、Google、品牌網(wǎng)站設(shè)計、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)