84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我有一个处理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模擬後台線程,數據處理完了更新到前台,一秒鐘一刷新,換成你自己的邏輯就可以
定義一個全域變量,讀的時候把目前行數寫到變數裡
定時程式定時更新介面上的值(取全域變數)
這是最簡單粗暴的辦法
另一種,讀取的時候非同步執行,直接把行數更新到介面