2012-04-18 3 views
11

, поэтому я создаю простое приложение Windows с Python и PyQt4. Я разработал свой пользовательский интерфейс так, как хочу его в QtCreator, и создал файл .py из файла .ui. Когда я пытаюсь на самом деле открыть экземпляр окна, однако я дал следующее сообщение об ошибке:PyQt4 затрудняет создание простого графического приложения

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

Так я иду обратно в файл ui_mainwindow.py и закомментируйте следующую строку:

MainWindow.setCentralWidget(self.centralWidget) 

Теперь, когда я запустил main.py, он будет генерировать экземпляр окна, но он теряет свой макет сетки, а элементы пользовательского интерфейса просто вид float. Любая идея, что я делаю неправильно?

Мой файл 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. setCentralWidget - это метод 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) 
Смежные вопросы