2012-04-18 107 views
11

所以我用Python和PyQt4創建一個簡單的Windows應用程序。我已經按照我在QtCreator中需要的方式設計了我的UI,並且已經從.ui文件創建了必要的.py文件。當我嘗試實際打開窗口的一個實例但是我提示以下錯誤:PyQt4麻煩創建一個簡單的GUI應用程序

AttributeError: 'Window' object has no attribute 'setCentralWidget' 

所以我回去到ui_mainwindow.py文件並註釋掉以下行:

MainWindow.setCentralWidget(self.centralWidget) 

現在,當我運行main.py時,它將生成一個窗口的實例,但它失去了它的網格佈局,而UI元素只是在那裏漂浮。任何想法我做錯了什麼?

我main.py文件:

import sys 
from PyQt4.QtGui import QApplication 
from window import Window 

if __name__ == "__main__": 

    app = QApplication(sys.argv) 
    window = Window() 
    window.show() 
    sys.exit(app.exec_()) 

和我window.py文件:

from PyQt4.QtCore import Qt, SIGNAL 
from PyQt4.QtGui import * 

from ui_mainwindow import Ui_MainWindow 

class Window(QWidget, Ui_MainWindow): 

    def __init__(self, parent = None): 

     QWidget.__init__(self, parent) 
     self.setupUi(self) 

回答

20

你需要從QMainWindow,不QWidget繼承。 setCentralWidgetQMainWindow的一種方法。

from PyQt4.QtCore import Qt, SIGNAL 
from PyQt4.QtGui import * 

from ui_mainwindow import Ui_MainWindow 

class Window(QMainWindow, Ui_MainWindow): 
    def __init__(self, parent = None): 

     QMainWindow.__init__(self, parent) 
     # or better 
     # super(Window, self).__init__(parent) 

     self.setupUi(self)