You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySide6中QScrollArea关联QWidget出现TypeError问题求助

问题解决:QScrollArea setWidget 类型错误

问题代码

self.workspace = QtWidgets.QWidget()
self.workspace.setGeometry(70, 0, 1000, 700)
self.workspace.setParent(self.main_widget)
self.workspace.setObjectName('workspace')
self.buttons['orders'].clicked.connect(self.orders_widget)

self.scroll = QtWidgets.QScrollArea
self.scroll.setWidget(self.workspace)

异常信息

TypeError: descriptor 'setWidget' for 'PySide6.QtWidgets.QScrollArea' objects doesn't apply to a 'PySide6.QtWidgets.QWidget' object

问题根源

你只是把QScrollArea类本身赋值给了self.scroll,没有创建类的实例。setWidget是实例方法,必须通过QScrollArea的对象调用;直接用类调用时,方法会把类本身当作第一个参数(即self参数)传入,但它需要的是QScrollArea实例,因此触发类型不匹配错误。

修复代码

给QScrollArea加上括号,创建类的实例:

self.workspace = QtWidgets.QWidget()
self.workspace.setGeometry(70, 0, 1000, 700)
self.workspace.setParent(self.main_widget)
self.workspace.setObjectName('workspace')
self.buttons['orders'].clicked.connect(self.orders_widget)

# 修复:添加括号创建QScrollArea实例
self.scroll = QtWidgets.QScrollArea()
self.scroll.setWidget(self.workspace)

额外建议:通常还需要设置滚动区域的自适应属性,让子部件能随滚动区域调整:

self.scroll.setWidgetResizable(True)
# 可以给滚动区域设置父部件和几何位置
self.scroll.setParent(self.main_widget)
self.scroll.setGeometry(70, 0, 1000, 700)

内容的提问来源于stack exchange,提问作者Ann Aleshkina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:00:58