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
相关产品推荐
相关产品推荐

