Ошибка в PyQt5 AttributeError: ‘QWidget’ object has no attribute ‘setCentralWidget’

574 просмотра
0
0 Комментариев

Пытаюсь создать интерфейс для приложения на PyQt5.
Делаю по инструкции на хабре (https://habrahabr.ru/post/248189/)
На данный момент проблемы возникают только при запуске main.py

# -*- coding: utf-8 -*-
 
#Form implementation generated from reading ui file 'gui.ui'
#
#Created by: PyQt5 UI code generator 5.9.2
#
#WARNING! All changes made in this file will be lost!
 
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(542, 265)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.radioButton = QtWidgets.QRadioButton(self.centralWidget)
        self.radioButton.setGeometry(QtCore.QRect(60, 10, 141, 21))
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtWidgets.QRadioButton(self.centralWidget)
        self.radioButton_2.setGeometry(QtCore.QRect(280, 10, 221, 23))
        self.radioButton_2.setObjectName("radioButton_2")
        self.frame = QtWidgets.QFrame(self.centralWidget)
        self.frame.setGeometry(QtCore.QRect(10, 40, 251, 161))
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.recTime = QtWidgets.QSpinBox(self.frame)
        self.recTime.setGeometry(QtCore.QRect(150, 10, 51, 21))
        self.recTime.setObjectName("recTime")
        self.recTime_3 = QtWidgets.QSpinBox(self.frame)
        self.recTime_3.setGeometry(QtCore.QRect(190, 100, 51, 21))
        self.recTime_3.setObjectName("recTime_3")
        self.label_2 = QtWidgets.QLabel(self.frame)
        self.label_2.setGeometry(QtCore.QRect(30, 70, 141, 21))
        self.label_2.setObjectName("label_2")
        self.timeEdit = QtWidgets.QTimeEdit(self.frame)
        self.timeEdit.setGeometry(QtCore.QRect(110, 125, 118, 21))
        self.timeEdit.setObjectName("timeEdit")
        self.label_3 = QtWidgets.QLabel(self.frame)
        self.label_3.setGeometry(QtCore.QRect(20, 100, 161, 21))
        self.label_3.setObjectName("label_3")
        self.recTime_2 = QtWidgets.QSpinBox(self.frame)
        self.recTime_2.setGeometry(QtCore.QRect(175, 70, 51, 21))
        self.recTime_2.setObjectName("recTime_2")
        self.label_4 = QtWidgets.QLabel(self.frame)
        self.label_4.setGeometry(QtCore.QRect(40, 126, 59, 20))
        self.label_4.setObjectName("label_4")
        self.checkBox = QtWidgets.QCheckBox(self.frame)
        self.checkBox.setGeometry(QtCore.QRect(30, 40, 191, 23))
        self.checkBox.setObjectName("checkBox")
        self.label = QtWidgets.QLabel(self.frame)
        self.label.setGeometry(QtCore.QRect(40, 10, 91, 21))
        self.label.setObjectName("label")
        self.frame_2 = QtWidgets.QFrame(self.centralWidget)
        self.frame_2.setGeometry(QtCore.QRect(270, 40, 261, 161))
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.listWidget = QtWidgets.QListWidget(self.frame_2)
        self.listWidget.setGeometry(QtCore.QRect(10, 10, 241, 131))
        self.listWidget.setObjectName("listWidget")
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtWidgets.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 542, 24))
        self.menuBar.setObjectName("menuBar")
        self.menu = QtWidgets.QMenu(self.menuBar)
        self.menu.setObjectName("menu")
        MainWindow.setMenuBar(self.menuBar)
        self.mainToolBar = QtWidgets.QToolBar(MainWindow)
        self.mainToolBar.setObjectName("mainToolBar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
        self.statusBar = QtWidgets.QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)
        self.action = QtWidgets.QAction(MainWindow)
        self.action.setObjectName("action")
        self.action_3 = QtWidgets.QAction(MainWindow)
        self.action_3.setObjectName("action_3")
        self.menu.addAction(self.action)
        self.menu.addSeparator()
        self.menu.addAction(self.action_3)
        self.menuBar.addAction(self.menu.menuAction())
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.radioButton.setText(_translate("MainWindow", "Записать сейчас"))
        self.radioButton_2.setText(_translate("MainWindow", "Использовать готовую запись"))
        self.label_2.setText(_translate("MainWindow", "Пауза между циклами"))
        self.label_3.setText(_translate("MainWindow", "Количество повторений"))
        self.label_4.setText(_translate("MainWindow", "Начать в"))
        self.checkBox.setText(_translate("MainWindow", "Записывать циклически"))
        self.label.setText(_translate("MainWindow", "Время записи"))
        self.menu.setTitle(_translate("MainWindow", "Файл"))
        self.action.setText(_translate("MainWindow", "Сохранить отчет"))
        self.action_3.setText(_translate("MainWindow", "Выход"))

после выполнения возникает ошибка

QApplication: invalid style override passed, ignoring it.
Traceback (most recent call last):
  File "main.py", line 35, in <module>
    ui = MainWindow(window)
  File "main.py", line 20, in __init__
    self.setupUi(form)
  File "/home/***/src/gui.py", line 63, in setupUi
    MainWindow.setCentralWidget(self.centralWidget)
AttributeError: 'QWidget' object has no attribute 'setCentralWidget'


Добавить комментарий

2 Answers

Python Опубликовано 16.12.2018
0

В классе QWidget нету метода setCentralWidget он присутствует в QMainWindow

Добавить комментарий
0

Разобрался сам. Вместо QtWidgets.QWidget() слeдовало использовать QtWidgets.QMainWindow()

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up