Python PyQt5:TypeError:';顶级小部件的基类错误';
我已经使用QtDesigner创建了to.ui文件,并将它们加载到两个单独的窗口中,如下所示Python PyQt5:TypeError:';顶级小部件的基类错误';,python,python-3.x,pyqt,pyqt5,Python,Python 3.x,Pyqt,Pyqt5,我已经使用QtDesigner创建了to.ui文件,并将它们加载到两个单独的窗口中,如下所示 class MainWindow(QMainWindow): def __init__(self, parent=None): super().__init__() # Set up the user interface from Designer. uic.loadUi("interface/UI/main.ui", self)
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__()
# Set up the user interface from Designer.
uic.loadUi("interface/UI/main.ui", self)
# Connect up the buttons
self.button_classes.clicked.connect(self.open_classes)
self.w = []
def open_classes(self):
self.w.append(PopupWindow(self))
self.w[-1].show()
class PopupWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__()
# Set up the user interface from Designer.
uic.loadUi("interface/UI/newclass.ui", self)
当我在调试模式下以PyCharm运行代码时,会发生以下错误,但是当代码正常运行时不会发生这种情况
TypeError: ('Wrong base class of toplevel widget', (<class 'controllers.GUI.PopupWindow'>, 'QDialog'))
TypeError:(“顶级小部件的基类错误”,(,“QDialog”))
您在消息中有QDialog
“顶级小部件的基类错误”(,“QDialog”)
所以我认为它希望QDialog
创建第二个窗口,但您在类PopupWindow(QMainWindow)中使用QMainWindow
:
您在消息中有QDialog
“顶级小部件的基类错误”(,“QDialog”)
所以我认为它希望QDialog
创建第二个窗口,但您在类弹出窗口(QMainWindow)中使用QMainWindow
:
我在使用QDialog
时遇到了类似的问题,但将其更改为QMainWindow
,它就工作了。我在使用QDialog
时遇到了类似的问题,但将其更改为QMainWindow
,它就工作了。在console/terminal/cmd.exe/powershell中运行时,是否会收到错误消息?添加有问题的完整错误消息。@furas当我只是正常运行代码时,没有错误,但是如果我在PyCharm的调试模式下运行代码,我会得到一个我添加到问题中的类型错误。您有消息“顶级小部件的基类错误”,(,“QDialog”))
所以我想它希望您使用QDialog
来创建第二个窗口,但是您在类弹出窗口(QMainWindow)中使用QMainWindow
:
@furas非常感谢您的帮助,将类弹出窗口(QMainWindow)
更改为类弹出窗口(QDialog)
解决了问题。我相信这是因为我在QtDesigner中选择了“带按钮的对话框”模板。如果您想回答问题,我已将问题更改为正确反映问题在console/terminal/cmd.exe/powershell中运行时是否收到错误消息?添加有问题的完整错误消息。@furas当我只是正常运行代码时,没有错误,但是如果我在PyCharm的调试模式下运行代码,我会得到一个我添加到问题中的类型错误。您有消息“顶级小部件的基类错误”,(,“QDialog”))
所以我想它希望您使用QDialog
来创建第二个窗口,但是您在类弹出窗口(QMainWindow)中使用QMainWindow
:
@furas非常感谢您的帮助,将类弹出窗口(QMainWindow)
更改为类弹出窗口(QDialog)
解决了问题。我相信这是因为我在QtDesigner中选择了“带按钮的对话框”模板。如果你愿意回答的话,我已经修改了这个问题,以恰当地反映这个问题