Qthread執行緒修改UI

2021-07-25 05:10:35 字數 1379 閱讀 1740

from pyqt5.qtcore import *  

from pyqt5.qtgui import *

from pyqt5.qtwidgets import *

import time

'''訊號傳參型別

pyqtsignal() #無引數訊號

pyqtsignal(int) # 乙個引數(整數)的訊號

pyqtsignal([int],[str] # 乙個引數(整數或者字串)過載版本的訊號

pyqtsignal(int,str) #二個引數(整數,字串)的訊號

pyqtsignal([int,int],[int,str]) #二個引數([整數,整數]或者[整數,字串])過載版本

'''class mythread(qthread):

#定義訊號,定義引數為str型別

_signal=pyqtsignal(str)

def __init__(self):

super(mythread,self).__init__()

def run(self):

for i in range(2000000):

#發出訊號

self._signal.emit('當前迴圈值為:%s'%i)

#讓程式休眠

time.sleep(0.5)

if __name__ == '__main__':

dlg = qdialog()

dlg.resize(400, 300)

dlg.setwindowtitle("自定義按鈕測試")

dlglayout = qvboxlayout()

dlglayout.setcontentsmargins(40, 40, 40, 40)

btn=qpushbutton('測試按鈕')

dlglayout.addwidget(btn)

dlglayout.addstretch(40)

dlg.setlayout(dlglayout)

dlg.show()

def chuli(s):

dlg.setwindowtitle(s)

btn.settext(s)

#建立執行緒

thread=mythread()

#註冊訊號處理函式

thread._signal.connect(chuli)

#啟動執行緒

thread.start()

dlg.exec_()

C Wpf非同步修改UI,多執行緒修改UI(二)

1.使用定時器非同步修改 這是相對比較簡單的方法 在wpf中定時器使用diapatchertimer,不使用timer原因 在乙個應用程式中,timer會重複生成time事件,而dispatchertimer是乙個整合到了dispatcher佇列中的時鐘,這可以使它被按照指定的時間間隔以指定的pri...

跨執行緒修改UI控制項

1.直接修改,失敗引發異常.namespace test private void setlabeltext private void btnvisitlabel click object sender,eventargs e 2.使用 呼叫ui控制項的invoke方法修改,成功.namespace...

C WinForm跨執行緒修改UI介面

在我做winform開發的過程中,經常會遇到耗時操作或阻塞操作。他們會引發軟體的卡頓甚至假死,嚴重影響軟體的使用。因此,這類耗時或阻塞的操作一般都會使用非同步的方式去執行,不影響主線程 ui執行緒 與使用者間的互動。但多個執行緒競爭讀寫同乙個資源往往會造成意想不到的意外結果,ui介面也是一種資源,所...