我有一个处理example.csv的后台程序,现在想把当前读行数实时显示到GUI界面中去。
就是这下面
能否提供一些思路,谢谢!
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_()
伊谢尔伦2017-04-17 17:50:08
定义一个全局变量,读的时候把当前行数写到变量里
定时程序定时更新界面上的值(取全局变量)
这是最简单粗暴的办法
另一种,读取的时候异步执行,直接把行数更新到界面