我有一个处理example.csv的后台程序,现在想把当前读行数实时显示到GUI界面中去。就是这下面
能否提供一些思路,谢谢!
欢迎选择我的课程,让我们一起见证您的进步~~
PyQt的signal-slot機制不就是乾這個的嗎,你要輸入的輸入框比如LineEdit對應一個slot,處理的地方發送一個signal,剩下的就由PyQt自己做綁定,都不用具體的函數調用,程式碼看起來清爽多了下面這個例子,BackendThread模擬後台線程,數據處理完了更新到前台,一秒鐘一刷新,換成你自己的邏輯就可以
# -*- coding: utf-8 -*- from PyQt4.Qt import * from PyQt4.QtCore import * from PyQt4.QtGui import * import time class Backend(QThread): update_date = pyqtSignal(QString) def run(self): while True: data = QDateTime.currentDateTime() self.update_date.emit(QString(str(data))) time.sleep(1) class Window(QDialog): def __init__(self): QDialog.__init__(self) self.resize(400, 100) self.input = QLineEdit(self) self.input.resize(400, 100) def handleDisplay(self, data): self.input.setText(data) if __name__ == '__main__': import sys app = QApplication(sys.argv) b = Backend() w = Window() b.update_date.connect(w.handleDisplay) b.start() w.show() app.exec_()
定義一個全域變量,讀的時候把目前行數寫到變數裡定時程式定時更新介面上的值(取全域變數)
這是最簡單粗暴的辦法
另一種,讀取的時候非同步執行,直接把行數更新到介面
PyQt的signal-slot機制不就是乾這個的嗎,你要輸入的輸入框比如LineEdit對應一個slot,處理的地方發送一個signal,剩下的就由PyQt自己做綁定,都不用具體的函數調用,程式碼看起來清爽多了
下面這個例子,BackendThread模擬後台線程,數據處理完了更新到前台,一秒鐘一刷新,換成你自己的邏輯就可以
定義一個全域變量,讀的時候把目前行數寫到變數裡
定時程式定時更新介面上的值(取全域變數)
這是最簡單粗暴的辦法
另一種,讀取的時候非同步執行,直接把行數更新到介面