2016-04-15 60 views
0

當PyQt GUI加載時,我必須加載存儲在本地HDD中的非常大的熊貓數據幀。如何在pytq窗口中加載大型pkl文件?

問題是,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

你需要應該使用QtCore.QThread,對你的情況傳遞給它應該在的線程代碼讀取的「PKL」對象。然後,當讀取完成時,您需要從線程發出一個信號。該信號連接到您的主類/主線程,該主線程可訪問pkl對象,並可根據需要更新GUI。

用於代碼檢查。 Updating GUI elements in MultiThreaded PyQT

相關問題