AttributeError: QDialog object has no attribute setCentralWidget

后端 未结 2 1092
被撕碎了的回忆
被撕碎了的回忆 2021-01-14 12:55

I\'m trying to create a GUI with QT Designer. I\'ve converted my .ui designer file to a .py file using the following tutorial: http://pyqt.sourceforge.net/Docs/PyQt5/designe

相关标签:
2条回答
  • 2021-01-14 13:41

    Instead of going all the way to QtDesigner and make another ui You can go to the ui file and edit it in the Code editor and you will see that the file has the main class written in the first or second line and you can change it Here is an example.

    <?xml version="1.0" encoding="UTF-8"?>
    <ui version="4.0">
     <class>Form</class>
     <widget class="QWidget" name="Form">
      <property name="geometry">
      .
      .
      .
      .
    

    Here we can change the tag's class attribute to QMainWindow so it will become

    <?xml version="1.0" encoding="UTF-8"?>
    <ui version="4.0">
     <class>Form</class>
     <widget class="QMainWindow" name="Form">
      <property name="geometry">
       .
       .
       .
       .
    
    0 讨论(0)
  • 2021-01-14 13:42

    When you use qt-designer you can choose the type of widget you want to design:

    For example you have chosen a Main Window, therefore you must implement it with QMainWindow.

    #
    # Created by: PyQt5 UI code generator 5.7
    #
    # WARNING! All changes made in this file will be lost!
    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtWidgets import QApplication, QMainWindow
    
    class Ui_ImageDialog(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(800, 600)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.pushButton = QtWidgets.QPushButton(self.centralwidget)
            self.pushButton.setGeometry(QtCore.QRect(160, 200, 191, 151))
            self.pushButton.setObjectName("pushButton")
            self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
            self.pushButton_2.setGeometry(QtCore.QRect(450, 200, 191, 151))
            self.pushButton_2.setObjectName("pushButton_2")
            self.label = QtWidgets.QLabel(self.centralwidget)
            self.label.setGeometry(QtCore.QRect(150, 70, 501, 101))
            palette = QtGui.QPalette()
            brush = QtGui.QBrush(QtGui.QColor(255, 0, 255))
            brush.setStyle(QtCore.Qt.SolidPattern)
            palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
            brush = QtGui.QBrush(QtGui.QColor(255, 0, 255))
            brush.setStyle(QtCore.Qt.SolidPattern)
            palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
            brush = QtGui.QBrush(QtGui.QColor(127, 127, 127))
            brush.setStyle(QtCore.Qt.SolidPattern)
            palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
            self.label.setPalette(palette)
            font = QtGui.QFont()
            font.setPointSize(72)
            self.label.setFont(font)
            self.label.setLayoutDirection(QtCore.Qt.LeftToRight)
            self.label.setObjectName("label")
            MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
            self.menubar.setObjectName("menubar")
            MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
            self.pushButton.setText(_translate("MainWindow", "Open Input File:"))
            self.pushButton_2.setText(_translate("MainWindow", "Run"))
            self.label.setText(_translate("MainWindow", "Happy Scraping"))
    
    app = QApplication(sys.argv)
    window = QMainWindow()
    
    ui = Ui_ImageDialog()
    ui.setupUi(window)
    
    window.show()
    sys.exit(app.exec_())
    

    If you want to implement a QDialog you must choose some of the Dialog(Dialog with Buttons Bottom, Dialog with Buttons Right or Dialog without Buttons).

    0 讨论(0)
提交回复
热议问题