2012-04-18 18 views
11

así que estoy creando una aplicación de Windows simple con Python y PyQt4. He diseñado mi interfaz de usuario de la manera que quiero en QtCreator y he creado el archivo .py necesario del archivo .ui. Cuando intento abrir realmente una instancia de la ventana sin embargo me dan el siguiente error:PyQt4 problema para crear una aplicación de interfaz gráfica de usuario simple

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

Así que volver a entrar en el archivo ui_mainwindow.py y comente la línea siguiente:

MainWindow.setCentralWidget(self.centralWidget) 

Ahora cuando ejecuto main.py generará una instancia de la ventana pero pierde su diseño de cuadrícula y los elementos de la interfaz de usuario simplemente flotan allí. ¿Alguna idea de lo que estoy haciendo mal?

Mi archivo 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_()) 

y mi archivo 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) 

Respuesta

20

Es necesario heredar de QMainWindow, no QWidget. setCentralWidget es un método de 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) 
Cuestiones relacionadas