Подтвердить что ты не робот

PyQt4 затрудняет создание простого графического интерфейса

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

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)
4b9b3361

Ответ 1

Вам нужно наследовать от 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)