Python 如何在pytq窗口中加载大型pkl文件?

Python 如何在pytq窗口中加载大型pkl文件?,python,multithreading,pyqt,Python,Multithreading,Pyqt,当加载PyQt GUI时,我必须加载存储在本地HDD中的非常大的数据帧 问题是,GUI窗口会一直挂起,直到加载完大文件为止 下面是我的示例代码 我想我的悬挂问题可以通过使用线程和progressbar窗口来解决 但是,我发现的大多数线程示例都使用全局函数和变量 在我的情况下,self.pkl.file应该已经加载了数据。所以我应该找到合适的方法将实例抛出到线程类/函数 我希望您能为我的情况介绍一些示例代码或指南 先谢谢你 #!/usr/bin/python # -*- coding: utf-

当加载PyQt GUI时,我必须加载存储在本地HDD中的非常大的数据帧

问题是,GUI窗口会一直挂起,直到加载完大文件为止

下面是我的示例代码

我想我的悬挂问题可以通过使用线程和progressbar窗口来解决

但是,我发现的大多数线程示例都使用全局函数和变量

在我的情况下,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()

您需要使用QtCore.QThread,在您的情况下,将线程代码中应该读取的“pkl”对象传递给它。然后,当读取完成时,您需要从线程发出一个信号。该信号连接到您的主类/主线程,它将访问pkl对象,并可以根据需要更新GUI

用于代码检查。