首頁  >  問答  >  主體

python - pyqt如何显示实时数据

我有一个处理example.csv的后台程序,现在想把当前读行数实时显示到GUI界面中去。
就是这下面

能否提供一些思路,谢谢!

天蓬老师天蓬老师2742 天前1028

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-04-17 17:50:08

    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_()

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:50:08

    定義一個全域變量,讀的時候把目前行數寫到變數裡
    定時程式定時更新介面上的值(取全域變數)

    這是最簡單粗暴的辦法

    另一種,讀取的時候非同步執行,直接把行數更新到介面

    回覆
    0
  • 取消回覆