PyQt4 di problemi nella creazione di una semplice applicazione GUI

così sto creando una semplice applicazione per windows con Python e PyQt4. Ho progettato il mio UI il modo in cui voglio in QtCreator e ho creato il necessario .py file dal .file di interfaccia utente. Quando cerco di aprire effettivamente un’istanza della finestra tuttavia mi dà il seguente errore:

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

Così torno in ui_mainwindow.py file e commento la riga seguente:

MainWindow.setCentralWidget(self.centralWidget)

Ora, quando ho eseguito main.py si genera un’istanza della finestra, ma perde la sua griglia di layout e gli elementi dell’interfaccia utente appena sorta di galleggiare lì. Qualsiasi idea di cosa sto facendo di sbagliato?

Mio main.py file:

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 window.py file:

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)
InformationsquelleAutor Cyborg771 | 2012-04-18



One Reply
  1. 20

    È necessario 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)

Lascia un commento