본문 바로가기
Programming/Python

[Python] AttributeError: 'MainDialog' object has no attribute 'setCentralWidget' 에러

by Skogkatt의 개인 블로그 2020. 1. 13.
반응형

AttributeError: 'MainDialog' object has no attribute 'setCentralWidget' 에러 

import sys

from PyQt5.QtWidgets import *
from PyQt5 import uic

main_ui = uic.loadUiType('_uiFiles/main.ui')[0]


class MainWindow(QDialog, main_ui):
    def __init__(self):
        super().__init__()
        self.setupUi(self)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_dialog = MainWindow()
    main_dialog.show()
    app.exec_()

 

해결 방법

Qt Designer에서 폼을 만들 때 Main Window를 선택하고 클래스 부분에 사용하지 않았기 때문에 발생한 오류다.

 

QMainWindow를 import하고

from PyQt5.QtWidgets import QApplication, QMainWindow

# from PyQt5.QtWidgets import * 

 

메인 윈도우 부분의 QDialog를 QMainWindow로 변경하면 된다.

class MainWindow(QDialog, main_ui): <-- 이 부분
    def __init__(self):
        super().__init__()
        self.setupUi(self)
class MainWindow(QMainWindow, main_ui): <-- QMainWindow 로 변경
    def __init__(self):
        super().__init__()
        self.setupUi(self)

 

 

참고 링크

stack overflow - https://stackoverflow.com/questions/41458676/attributeerror-qdialog-object-has-no-attribute-setcentralwidget

반응형

댓글