Python+PyQT5如何實(shí)現(xiàn)子線程更新UI界面-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)Python+PyQT5如何實(shí)現(xiàn)子線程更新UI界面的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

創(chuàng)新互聯(lián)建站專注于芷江企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,電子商務(wù)商城網(wǎng)站建設(shè)。芷江網(wǎng)站建設(shè)公司,為芷江等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

子線程里是不能更新UI界面的,在移動(dòng)端方面。Android的UI訪問(wèn)是沒有加鎖的,多個(gè)線程可以同時(shí)訪問(wèn)更新操作同一個(gè)UI控件。也就是說(shuō)訪問(wèn)UI的時(shí)候,android系統(tǒng)當(dāng)中的控件都不是線程安全的,這將導(dǎo)致在多線程模式下,當(dāng)多個(gè)線程共同訪問(wèn)更新操作同一個(gè)UI控件時(shí)容易發(fā)生不可控的錯(cuò)誤。所以Android中規(guī)定只能在UI線程中訪問(wèn)UI,相當(dāng)于從另一個(gè)角度給Android的UI訪問(wèn)加上鎖,一個(gè)偽鎖。

在PyQT5中使用QThread

from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time
 
#繼承QThread
 
class Mythread(QThread):
  # 定義信號(hào),定義參數(shù)為str類型
  breakSignal = pyqtSignal(int)
 
  def __init__(self, parent=None):
    super().__init__(parent)
    # 下面的初始化方法都可以,有的python版本不支持
    # super(Mythread, self).__init__()
 
  def run(self):
      #要定義的行為,比如開始一個(gè)活動(dòng)什么的
 
      for i in(1,1000):
 
        print(i)
        self.breakSignal.emit(i)
      
 
 
if __name__ == '__main__':
  app = QApplication([])
  dlg = QDialog()
  dlg.resize(400, 300)
  dlg.setWindowTitle("自定義按鈕測(cè)試")
  dlgLayout = QVBoxLayout()
  dlgLayout.setContentsMargins(40, 40, 40, 40)
  btn = QPushButton('測(cè)試按鈕')
  dlgLayout.addWidget(btn)
  dlgLayout.addStretch(40)
  dlg.setLayout(dlgLayout)
  dlg.show()
 
 
  def chuli(a):
    # dlg.setWindowTitle(s)
    btn.setText(str(a))
 
  # 創(chuàng)建線程
  thread = Mythread()
  # # 注冊(cè)信號(hào)處理函數(shù)
  thread.breakSignal.connect(chuli)
  # # 啟動(dòng)線程
  thread.start()
  dlg.exec_()
  app.exit()

在python中刷新UI可以類似,采用消息傳遞的機(jī)制。

可以在子線程中修改主線程的變量,主線程讀取變量并繪制的方式。

感謝各位的閱讀!關(guān)于“Python+PyQT5如何實(shí)現(xiàn)子線程更新UI界面”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站題目:Python+PyQT5如何實(shí)現(xiàn)子線程更新UI界面-創(chuàng)新互聯(lián)
本文URL:http://muchs.cn/article28/dhspjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管微信公眾號(hào)、面包屑導(dǎo)航、定制網(wǎng)站、網(wǎng)站設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)