2012-04-18 9 views
11

, więc tworzę prostą aplikację Windows z Python i PyQt4. Zaprojektowałem mój interfejs użytkownika tak, jak tego chcę w QtCreator i utworzyłem niezbędny plik .py z pliku .ui. Kiedy próbuję faktycznie otworzyć instancję okna jednak jestem ze względu na następujący błąd:Wystąpił problem z PyQt4, tworząc prostą aplikację GUI

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

Więc wrócić do pliku ui_mainwindow.py i wypowiedzieć się następujący wiersz:

MainWindow.setCentralWidget(self.centralWidget) 

Teraz, gdy uruchomię plik main.py, wygeneruje on wystąpienie okna, ale straci on swój układ siatki, a elementy interfejsu użytkownika będą w nim w pewnym stopniu pływać. Masz pojęcie, co robię źle?

Mój plik 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_()) 

i mój plik 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) 

Odpowiedz

20

trzeba dziedziczą QMainWindow, nie QWidget. setCentralWidget to metoda 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) 
Powiązane problemy