今天小編就為大家分享一篇Python+PyQT5的子執行緒更新UI界面的實體,具有很好的參考價值,希望對大家有所幫助,一起跟隨小編過來看看吧
子執行緒里是不能更新UI界面的,在移動端方面,Android的UI訪問是沒有加鎖的,多個執行緒可以同時訪問更新操作同一個UI控制元件,也就是說訪問UI的時候,android系統當中的控制元件都不是執行緒安全的,這將導致在多執行緒模式下,當多個執行緒共同訪問更新操作同一個UI控制元件時容易發生不可控的錯誤,所以Android中規定只能在UI執行緒中訪問UI,相當于從另一個角度給Android的UI訪問加上鎖,一個偽鎖,
宣告很多小伙伴學習Python程序中會遇到各種煩惱問題解決不了,為此小編建了個群 624440745,
在PyQT5中使用QThreadfrom PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time
#繼承QThread
class Mythread(QThread):
# 定義信號,定義引數為str型別
breakSignal = pyqtSignal(int)
def __init__(self, parent=None):
super().__init__(parent)
# 下面的初始化方法都可以,有的python版本不支持
# super(Mythread, self).__init__()
def run(self):
#要定義的行為,比如開始一個活動什么的
for i in(1,1000):
print(i)
self.breakSignal.emit(i)
if __name__ == '__main__':
app = QApplication([])
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(a):
# dlg.setWindowTitle(s)
btn.setText(str(a))
# 創建執行緒
thread = Mythread()
# # 注冊信號處理函式
thread.breakSignal.connect(chuli)
# # 啟動執行緒
thread.start()
dlg.exec_()
app.exit()
在python中重繪UI可以類似,采用訊息傳遞的機制,
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/190365.html
標籤:Python
