想通過pyqt5實作點擊按鈕后在一個文本框中列印出0-999這10000個數字的功能。如果回應函式寫成下面這樣,當我點擊按鈕后,就會執行for回圈,一直到回圈全部結束后才會在文本框中一下子列印出這10000個數字。但是我想實作邊回圈邊列印,也就是我點擊一下按鈕后,文本框中一個一個地列印出數字的效果,可以實作嗎?
[code=python][/def click(self):
for i in range(10000):
self.textedit.append(str(i))code]
uj5u.com熱心網友回復:
參考下這個例子, 用信號槽
from PyQt5.QtCore import QThread, pyqtSignal, QDateTime, QObject
from PyQt5.QtWidgets import QApplication, QDialog, QLineEdit
from time import sleep
import sys
class BackendThread(QObject):
# 通過類成員物件定義信號
update_date = pyqtSignal(str)
# 處理業務邏輯
def run(self):
for i in range(1001):
sleep(0.01)
self.update_date.emit(str(i))
class Window(QDialog):
def __init__(self):
QDialog.__init__(self)
self.setWindowTitle('PyQt 5界面實時更新例子')
self.resize(400, 100)
self.input = QLineEdit(self)
self.input.resize(400, 100)
self.initUI()
def initUI(self):
# 創建執行緒
self.backend = BackendThread()
# 連接信號
self.backend.update_date.connect(self.handleDisplay)
self.thread = QThread()
self.backend.moveToThread(self.thread)
# 開始執行緒
self.thread.started.connect(self.backend.run)
self.thread.start()
# 重繪文本框
def handleDisplay(self, data):
self.input.setText(data)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/52690.html
上一篇:書籍Deep Learning for Computer Vision with Python原始碼
下一篇:CNN單張測驗問題
