AttributeError:“Ui_MainWindow"对象没有属性“setCentralWidget" [英] AttributeError: 'Ui_MainWindow' object has no attribute 'setCentralWidget'

查看:17
本文介绍了AttributeError:“Ui_MainWindow"对象没有属性“setCentralWidget"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我仍在为我的数据库开发 GUI,现在我遇到了另一个错误:

I am still working on the GUI for my Database and now i have a different error:

Traceback (most recent call last):
  File "G:PythonDatabase Kast ThuisPyQt TestMainMenu_ui.py", line 84, in <module>
    ex = Ui_MainWindow()
  File "G:PythonDatabase Kast ThuisPyQt TestMainMenu_ui.py", line 16, in __init__
    self.setupUi(self)
  File "G:PythonDatabase Kast ThuisPyQt TestMainMenu_ui.py", line 55, in setupUi
    MainWindow.setCentralWidget(self.centralwidget)
AttributeError: 'Ui_MainWindow' object has no attribute 'setCentralWidget'

我对 PyQt 一无所知,所以我不明白问题出在哪里.

I dont understand a thing about PyQt so i dont understand what the problem is.

代码是:(这是编辑后的版本,原始版本发布在下面)

The code is: (This is the edited version, Raw Version is Posted below)

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'Main_Menu.ui'
#
# Created by: PyQt5 UI code generator 5.5.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys

class Ui_MainWindow(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)
        self.setupUi(self)

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(387, 317)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("C:/Users/Natan Samuel Geldorp.Remytop-PC/Documents/music-note-sound-256.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName("verticalLayout")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.ButtonRemove = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonRemove.setObjectName("ButtonRemove")
        self.gridLayout.addWidget(self.ButtonRemove, 10, 0, 1, 1)
        self.ButtonShowAll = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonShowAll.setObjectName("ButtonShowAll")
        self.gridLayout.addWidget(self.ButtonShowAll, 7, 0, 1, 1)
        self.ButtonShowSpecific = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonShowSpecific.setObjectName("ButtonShowSpecific")
        self.gridLayout.addWidget(self.ButtonShowSpecific, 8, 0, 1, 1)
        self.Text = QtWidgets.QLabel(self.centralwidget)
        self.Text.setObjectName("Text")
        self.gridLayout.addWidget(self.Text, 1, 0, 1, 1)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 3, 0, 1, 1)
        self.ButtonAdd = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonAdd.setObjectName("ButtonAdd")
        self.gridLayout.addWidget(self.ButtonAdd, 9, 0, 1, 1)
        self.ButtonExit = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonExit.setObjectName("ButtonExit")
        self.gridLayout.addWidget(self.ButtonExit, 4, 0, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 387, 21))
        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", "Main Menu"))
        self.ButtonRemove.setText(_translate("MainWindow", "Remove an album"))
        self.ButtonShowAll.setText(_translate("MainWindow", "Show all registerd albums"))
        self.ButtonShowSpecific.setText(_translate("MainWindow", "Show a specific album"))
        self.Text.setText(_translate("MainWindow", "Welcome to the MusicDatabase Version 2.1-2017"))
        self.label.setText(_translate("MainWindow", "Please select one of the options below."))
        self.ButtonAdd.setText(_translate("MainWindow", "Add an album"))
        self.ButtonExit.setText(_translate("MainWindow", "Exit"))
        self.label_2.setText(_translate("MainWindow", "Authors: N.S. Geldorp & H. Nahumury"))
        self.ButtonExit.clicked.connect(self.ButtonExit)

    def ButtonExit(self):
        exit()
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    ex = Ui_MainWindow()
    ex.show()
    sys.exit(app.exec_())

有人发现问题了吗?

-纳坦

发布原始转换:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'Main_Menu.ui'
#
# Created by: PyQt5 UI code generator 5.5.1
#
# 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(387, 317)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("C:/Users/Natan Samuel Geldorp.Remytop-PC/Documents/music-note-sound-256.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName("verticalLayout")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.ButtonRemove = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonRemove.setObjectName("ButtonRemove")
        self.gridLayout.addWidget(self.ButtonRemove, 10, 0, 1, 1)
        self.ButtonShowAll = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonShowAll.setObjectName("ButtonShowAll")
        self.gridLayout.addWidget(self.ButtonShowAll, 7, 0, 1, 1)
        self.ButtonShowSpecific = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonShowSpecific.setObjectName("ButtonShowSpecific")
        self.gridLayout.addWidget(self.ButtonShowSpecific, 8, 0, 1, 1)
        self.Text = QtWidgets.QLabel(self.centralwidget)
        self.Text.setObjectName("Text")
        self.gridLayout.addWidget(self.Text, 1, 0, 1, 1)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 3, 0, 1, 1)
        self.ButtonAdd = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonAdd.setObjectName("ButtonAdd")
        self.gridLayout.addWidget(self.ButtonAdd, 9, 0, 1, 1)
        self.ButtonExit = QtWidgets.QPushButton(self.centralwidget)
        self.ButtonExit.setObjectName("ButtonExit")
        self.gridLayout.addWidget(self.ButtonExit, 4, 0, 1, 1)
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 387, 21))
        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", "Main Menu"))
        self.ButtonRemove.setText(_translate("MainWindow", "Remove an album"))
        self.ButtonShowAll.setText(_translate("MainWindow", "Show all registerd albums"))
        self.ButtonShowSpecific.setText(_translate("MainWindow", "Show a specific album"))
        self.Text.setText(_translate("MainWindow", "Welcome to the MusicDatabase Version 2.1-2017"))
        self.label.setText(_translate("MainWindow", "Please select one of the options below."))
        self.ButtonAdd.setText(_translate("MainWindow", "Add an album"))
        self.ButtonExit.setText(_translate("MainWindow", "Exit"))
        self.label_2.setText(_translate("MainWindow", "Authors: N.S. Geldorp & H. Nahumury"))

推荐答案

Qt Designer 用于生成视图的设计,pyuic5 将该设计转换为python代码,该元素必须与逻辑一起使用,另外建议不要修改它.

Qt Designer serves to generate the design of the view, pyuic5 converts that design into python code, this element must be used with logic, in addition it is recommended not to modify it.

第一个解决方案:

import sys

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    ex = Ui_MainWindow()
    w = QtWidgets.QMainWindow()
    ex.setupUi(w)
    w.show()
    sys.exit(app.exec_())

第二种解决方案:

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent=parent)
        ui = Ui_MainWindow()
        ui.setupUi(self)


import sys

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

第三种解决方案:

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent=parent)
        self.setupUi(self)



import sys

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

这篇关于AttributeError:“Ui_MainWindow"对象没有属性“setCentralWidget"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆