python線程槽函數(shù) python結(jié)束線程

python pyqt5 自定義信號和槽

"""

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比三都網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式三都網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋三都地區(qū)。費(fèi)用合理售后完善,十載實體公司更值得信賴。

【簡介】

內(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()

python線程間通信的問題,回答有加分!300

pyqt的線程之間的通信是通過信號to槽來實現(xiàn)的,首先你在線程類里面聲明一個全局槽比如:

class?imThread(QtCore.QThread):

imslot?=?QtCore.pyqtSignal()

這里是要重點(diǎn)注意,上面的是沒有任何參數(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()

這里也是需要重點(diǎn)注意的是,上面這個接口是沒有參數(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主線程卡死的情況了。

請問Python如何創(chuàng)建有限線程來處理函數(shù)?

使用線程池:threadpool 模塊。這是一個第三方模塊,可以通過下面方法安裝:

easy_install threadpool

本文題目:python線程槽函數(shù) python結(jié)束線程
分享URL:http://muchs.cn/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)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)