2015-12-11 61 views
0

我在Qt Designer中創建了一個簡單的測試程序,允許您選擇一個文件夾並在窗口上顯示其內容。它看起來像這樣:Qt Creator/Designer程序不顯示?

Simple Test Program

我已經成功轉換的.ui文件.py沒有失敗。其次,這裏是我的代碼運行的程序,恰當地命名爲main.py

from PyQt4 import QtGui 
import sys 
import design 
import os 

class ExampleApp(QtGui.QMainWindow, design.Ui_MainWindow): 
def _init_(self): 
    super(self._class_, self)._init_() 
    self.setupUI(self) 
    self.btnBrowse.clicked.connect(self.browse_folder) 

def browse_folder(self): 
    self.listWidget.clear() 
    directory = QtGui.QFileDialog.getExistingDirectory(self,"Pick a Folder") 

    if directory: 
     for file_name in os.listdir(directory): 
      self.listWidget.addItem(file_name) 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    form = ExampleApp() 
    form.show() 
    app.exec_() 

if __name__ == '__main__': 
    main() 

在我的命令提示符下,我運行下面的代碼:

python main.py 

它繼續加載了一兩秒鐘,然後我得到這個: Python and Program

有什麼,我做錯了嗎?爲什麼我的程序沒有顯示出它應該的方式?任何幫助表示讚賞!

+0

[PyQt4麻煩創建一個簡單的GUI應用程序]可能的重複(http://stackoverflow.com/questions/10219367/pyqt4-trouble-creating-a-simple-gui-application) – 101

回答

1

這些線是錯誤的:

def _init_(self): 
    super(self._class_, self)._init_() 

相反,你想要的東西,如:

def __init__(self, parent=None): 
    super(ExampleApp, self).__init__(parent) 

注意雙下劃線,不同的超參數,並通過parent給超類。我現在無法測試,但它應該更接近工作。

通過錯誤地命名您的__init__方法,它永遠不會被調用。這就解釋了爲什麼你得到一個窗口,但不是你設計的窗口。

+0

所以,我做到了,我得到了以下錯誤: '回溯(最近通話最後一個): 文件 「main.py」,第27行,在 的main() 文件 「main.py」 22行,在主 form = ExampleApp() 文件「main.py」,第8行,在__init __(父) super(ExampleAp p,self).__ init __(parent) NameError:名稱'parent'未定義' –

+0

對不起,代碼錯位。我嘗試將它分開,並沒有按照我想要的方式進行。 –

+0

您是否包含'parent = None'參數? – 101