在使用PyQt在主窗口中加载其他窗口出现问题。
以下是我的程序,报错如下:
MainWindow.setCentralWidget(self.centralwidget)
AttributeError: 'ChildrenForm' object has no attribute 'setCentralWidget'
报错是在class ChildrenForm中,调用的QWidget没有'setCentralWidget'方法,而QMainWindow类中才有,可是我写的这个类就是加载的其他窗口,请问有什么办法可以解决吗?
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QFileDialog
from QtWindow2 import Ui_MainWindow
from ChildrenForm2 import Ui_ChildrenForm
class MainForm(QMainWindow,Ui_MainWindow):
def __init__(self):
super(MainForm,self).__init__()
self.setupUi(self)
# self.child = ChildrenForm() 生成子窗口实例self.child
self.child = ChildrenForm()
# 菜单的点击事件,当点击关闭菜单时连接槽函数 close()
self.fileCloseAction.triggered.connect(self.close)
# 菜单的点击事件,当点击打开菜单时连接槽函数 openMsg()
self.fileOpenAction_2.triggered.connect(self.openMsg)
# 单击actionTst,子窗口就会显示在主窗口的MaingridLayout中
self.addWinaction.triggered.connect(self.childShow)
def childShow(self):
# 添加子窗口
self.MaingridLayout.addWidget(self.child)
self.child.show()
def openMsg(self):
file,ok = QFileDialog.getOpenFileName(self,"打开","C:/","All Files(*);;Text Files(*.txt)")
# 在状态栏显示文件地址
self.statusbar.showMessage(file)
class ChildrenForm(QWidget, Ui_ChildrenForm):
def __init__(self):
super(ChildrenForm, self).__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MainForm()
win.show()
sys.exit(app.exec())