Вопрос по python – Проблема с PyQt4 при создании простого приложения с графическим интерфейсом

11

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

<code>AttributeError: 'Window' object has no attribute 'setCentralWidget'
</code>

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

<code>MainWindow.setCentralWidget(self.centralWidget)
</code>

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

Мой файл main.py:

<code>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_())
</code>

и мой файл window.py:

<code>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)
</code>

Ваш Ответ

1   ответ
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)

Похожие вопросы