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

PyQt5按钮点击绑定QStackedWidget跳转报TypeError问题排查

问题原因与修复方案

错误根源

你写的绑定代码犯了PyQt/PySide信号槽绑定的常见错误:

  • connect()方法要求传入的参数是可调用的函数/方法对象,信号触发时框架会自动调用这个对象。
  • 你写的self.stackedWidget.setCurrentIndex(2)带了括号和参数,代码运行到这一行时会立刻执行setCurrentIndex(2)方法,而这个方法没有返回值(返回None),最终传给connect()的是None,完全不符合参数要求,因此抛出TypeError: argument 1 has unexpected type 'NoneType'——这里的参数1就是指你传给connect()的槽函数参数。

你测试的self.stackedWidget.update能正常运行,是因为你没有加括号调用方法,传给connect()的是update方法本身的引用,属于合法的可调用对象,只是这个方法只能刷新控件,没法完成页面跳转。

正确写法

你需要把带参数的方法调用包装成一个不需要传参就能执行的可调用对象,两种常用写法:

  1. 用lambda匿名函数包装(最常用,无需额外导包)
self.createButton.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(2))
  1. 用functools.partial固定方法参数
from functools import partial
self.createButton.clicked.connect(partial(self.stackedWidget.setCurrentIndex, 2))

注意:绑定槽的时候不要给目标方法直接加括号传参,加括号就代表当场执行,不是传方法引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:00:57