PyQt5中如何将两个视图放入QGroupBox?遇类型错误求解
解决PyQt5 setLayout类型错误的问题
嘿,我来帮你搞定这个报错!咱们先拆解下问题根源:
错误原因
你代码最后一行的self.setLayout(self.plotview)触发了类型错误,核心问题在于:QWidget.setLayout()方法要求传入的必须是QLayout类的实例,但你传的是QGroupBox——它是QWidget的子类,属于控件而非布局,所以PyQt会抛出类型不匹配的错误。
修复方案
其实改动很小,只需要给当前的LateralMenu窗口创建一个主布局,把已经配置好的QGroupBox加到这个主布局里,再把主布局设置给窗口就行。修改后的关键代码如下:
def initUI(self): self.plotview = QGroupBox("Group of views") self.text = "Menu Lateral" self.layout = QSplitter(Qt.Vertical) self.layout_plotview = QVBoxLayout() self.First = First() self.Second = Second() self.layout.addWidget(self.First) self.layout.addWidget(self.Second) self.layout_plotview.addWidget(self.layout) self.plotview.setLayout(self.layout_plotview) # 新增主布局,把QGroupBox加入其中 main_layout = QVBoxLayout() main_layout.addWidget(self.plotview) # 给当前窗口设置主布局 self.setLayout(main_layout)
补充说明
你之前的逻辑其实没问题:已经把First和Second视图通过QSplitter放进了QVBoxLayout,再把这个布局设置给了QGroupBox。差的最后一步就是——窗口不能直接把控件设为布局,必须通过一个布局来承载控件,所以新增的main_layout就是用来完成这个承接工作的。
内容的提问来源于stack exchange,提问作者user13826543
相关产品推荐
相关产品推荐

