pyqt5 'QWidget' object has no attribute 'setCentralWidget'(转)

时间:2023-03-09 00:50:47
pyqt5 'QWidget' object has no attribute 'setCentralWidget'(转)

pyqt5 'QWidget' object has no attribute 'setCentralWidget'

2019年02月18日 16:48:28 wardenjohn 阅读数:78
版权声明:本博客内容为原创,若要转载,请注明出处!否则禁止转载! https://blog.csdn.net/wardenjohn/article/details/87628891

在我刚使用PyQt5的时候,我运行的时候出现以下报错:

pyqt5 'QWidget' object has no attribute 'setCentralWidget'

这种错误我用了一种方法来解决:

在运行的主函数里面,原本是这样的

  1. if __name__ == '__main__':
  2. app = QtWidgets.QApplication(sys.argv)
  3. widgets = QtWidgets.QWidget()
  4. ui = MainWin()
  5. ui.main_ui.setupUi(widgets)
  6. widgets.show()
  7. ui.run_function()
  8. sys.exit(app.exec_())

然后修改成这样:

  1. if __name__ == '__main__':
  2. app = QtWidgets.QApplication(sys.argv)
  3. widgets = QtWidgets.QMainWindow()
  4. ui = MainWin()
  5. ui.main_ui.setupUi(widgets)
  6. widgets.show()
  7. ui.run_function()
  8. sys.exit(app.exec_())

除了这种方法,Stack Overflow上还有几种不知道可不可行:

1:

  1. class MainWindow(QtWidgets.QMainWindow):
  2. def __init__(self, parent=None):
  3. super(MainWindow, self).__init__(parent=parent)
  4. ui = Ui_MainWindow()
  5. ui.setupUi(self)
  6. import sys
  7. if __name__ == "__main__":
  8. app = QtWidgets.QApplication(sys.argv)
  9. w = MainWindow()
  10. w.show()
  11. sys.exit(app.exec_())

2:

  1. class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
  2. def __init__(self, parent=None):
  3. super(MainWindow, self).__init__(parent=parent)
  4. self.setupUi(self)
  5. import sys
  6. if __name__ == "__main__":
  7. app = QtWidgets.QApplication(sys.argv)
  8. w = MainWindow()
  9. w.show()