加载PyQt GUI时,我必须加载存储在本地硬盘中的非常庞大的pandas数据帧。
问题是,GUI窗口挂起,直到加载大文件完成。
以下是我的示例代码。
我认为我的悬挂问题可以通过使用线程和进度条窗口来解决。
但是,我发现的大多数线程示例都使用全局函数和变量。
在我的情况下,self.pkl.file应该已经加载了数据。所以我应该找到合适的方法将实例抛给线程类/函数。
我希望您为我的情况介绍几个示例代码或指南。
提前谢谢。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
import pandas as pd
class Pkl():
def __init__(self):
self.file = pd.read_pickle('file.dat')
class MyWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setWindowTitle('MyWindow')
self.show()
self.pkl = Pkl()
def close_application(self):
self.close()
def main():
app = QtGui.QApplication(sys.argv)
GUI = MyWindow()
'''
w = QtGui.QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
'''
sys.exit(app.exec_())
if __name__ == '__main__':
main()
答案 0 :(得分:0)
你需要使用QtCore.QThread,在你的情况下传递应该在线程代码上读取的“pkl”对象。然后,当读取完成时,您需要从线程发出信号。该信号连接到您的主类/主线程,它可以访问pkl对象并可以根据需要更新GUI。