2012-04-18 12 views
11

quindi sto creando una semplice applicazione Windows con Python e PyQt4. Ho progettato la mia interfaccia utente nel modo in cui la voglio in QtCreator e ho creato il file .py necessario dal file .ui. Quando provo ad aprire in realtà un'istanza della finestra però mi sono dato il seguente errore:PyQt4 problemi nella creazione di un'applicazione GUI semplice

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

Così torno nel file ui_mainwindow.py e commentate la seguente riga:

MainWindow.setCentralWidget(self.centralWidget) 

Ora, quando eseguo main.py, genererà un'istanza della finestra, ma perderà il suo layout di griglia e gli elementi dell'interfaccia utente verranno semplicemente spostati lì. Qualche idea su cosa sto facendo male?

Il mio file 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_()) 

e il mio file 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) 

risposta

20

Hai bisogno di ereditare da QMainWindow, non QWidget. setCentralWidget è un metodo di QMainWindow.

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) 
Problemi correlati