PyQt筆記——Qt中的線程QThread

說(shuō)Qt只是個(gè)圖形庫(kù)的人,終究還是太年輕了,雖然以前我也說(shuō)過(guò)這樣的話。

Qt中的線程可以在后臺(tái)偷偷摸摸地做一些看不見的事情,比如處理網(wǎng)絡(luò)連接,或者修改UI。用法也比較簡(jiǎn)單,最常見的是直接繼承。

import time  # 為了制造延遲效果
from PyQt5 import QtWidgets, QtCore

# 老三樣,創(chuàng)建一個(gè)應(yīng)用窗口
app = QtWidgets.QApplication([])
dlg = QtWidgets.QDialog()
dlg.show()

class MyThread(QtCore.QThread):
    ''' 繼承QThread類,并重寫run方法。run方法里面是我們?nèi)鰵g的地方。 '''
    def run(self):
        time.sleep(1)    # 設(shè)置一秒鐘后,改標(biāo)題
        dlg.setWindowTitle('hahahaha')

thread = MyThread()
thread.start()

app.exec_()
        

如果不方便繼承,可以用types模塊將外部函數(shù)添加到線程中:

import time
from PyQt5 import QtWidgets, QtCore

app = QtWidgets.QApplication([])
dlg = QtWidgets.QDialog()
dlg.show()

def changeTitle(self):
    # 注意這有個(gè) self, 跟一般的類函數(shù)寫法是一樣的
    # 我們要假裝這個(gè)函數(shù)就是thread中的函數(shù)
    time.sleep(1)
    dlg.setWindowTitle('hehehehe')

thread = QtCore.QThread()
#thread.run = changeTitle    # 這種方法是行不通的, 要用下面那種
import types
thread.run = types.MethodType(changeTitle, thread)   # 把外部函數(shù)強(qiáng)加給線程
thread.start()

app.exec_()

文中的代碼直接復(fù)制粘貼運(yùn)行就能看到效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容