Python+PyQT5的子線程更新UI界面的實例
子線程里是不能更新UI界面的,在移動端方面。Android的UI訪問是沒有加鎖的,多個線程可以同時訪問更新操作同一個UI控件。也就是說訪問UI的時候,android系統(tǒng)當中的控件都不是線程安全的,這將導(dǎo)致在多線程模式下,當多個線程共同訪問更新操作同一個UI控件時容易發(fā)生不可控的錯誤。所以Android中規(guī)定只能在UI線程中訪問UI,相當于從另一個角度給Android的UI訪問加上鎖,一個偽鎖。
在PyQT5中使用QThread
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import time
#繼承QThread
class Mythread(QThread):
# 定義信號,定義參數(shù)為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))
# 創(chuàng)建線程
thread = Mythread()
# # 注冊信號處理函數(shù)
thread.breakSignal.connect(chuli)
# # 啟動線程
thread.start()
dlg.exec_()
app.exit()
在python中刷新UI可以類似,采用消息傳遞的機制。
可以在子線程中修改主線程的變量,主線程讀取變量并繪制的方式。
以上這篇Python+PyQT5的子線程更新UI界面的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python中使用mysql數(shù)據(jù)庫詳細介紹
這篇文章主要介紹了python中使用mysql數(shù)據(jù)庫詳細介紹,本文起講解了安裝mysql、安裝MySQL-python、mysql 的基本操作、python 操作mysql數(shù)據(jù)庫基礎(chǔ)等內(nèi)容,需要的朋友可以參考下2015-03-03
python監(jiān)控進程狀態(tài),記錄重啟時間及進程號的實例
今天小編就為大家分享一篇python監(jiān)控進程狀態(tài),記錄重啟時間及進程號的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的古詩生成器
這篇文章主要為大家詳細介紹了基于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的古詩生成器,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
python中Switch/Case實現(xiàn)的示例代碼
本篇文章主要介紹了python中Switch/Case實現(xiàn)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
Python 爬蟲批量爬取網(wǎng)頁圖片保存到本地的實現(xiàn)代碼
這篇文章主要介紹了Python 爬蟲批量爬取網(wǎng)頁圖片保存到本地,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12

