84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
我有一个处理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模拟后台线程,数据处理完了更新到前台,一秒钟一刷新,换成你自己的逻辑就可以
定义一个全局变量,读的时候把当前行数写到变量里
定时程序定时更新界面上的值(取全局变量)
这是最简单粗暴的办法
另一种,读取的时候异步执行,直接把行数更新到界面