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

PyQt5无参函数绑定报错:参数1意外为NoneType类型

PyQt5信号连接报错:TypeError: argument 1 has unexpected type 'NoneType'

错误根源

你代码里的核心问题出在mainWindow类的do_something方法中:

self.functionX = self.widgetX.functionX()

这里的()会立即执行functionX方法,而ClassX的functionX没有返回值(默认返回None),导致self.functionX被赋值为None。当你用self.button_widget.clicked.connect(self.functionX)连接信号时,传入的参数是None,不符合信号连接要求的可调用对象,因此抛出类型错误。

修正方法

去掉functionX后面的括号,直接引用函数对象(而不是执行它):

self.functionX = self.widgetX.functionX

完整修正后的代码

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys

class mainWindow(QWidget):
    def __init__(self):
        super(mainWindow, self).__init__()

        self.title = 'Window Title'
        self.left = 100
        self.top = 100
        self.width = 750
        self.height = 500
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.do_something()

        self.button_widget = QPushButton("点击修改文本")
        self.layout = QGridLayout()
        self.layout.addWidget(self.button_widget, 0, 0)
        self.layout.addWidget(self.widgetX, 1, 0, 1, 3) # row, col, row_span, col_span
        self.setLayout(self.layout)

        self.button_widget.clicked.connect(self.functionX)

    def do_something(self):
        self.widgetX = ClassX()
        # 去掉括号,引用函数对象而非执行函数
        self.functionX = self.widgetX.functionX
        self.variableX = self.widgetX.variableX
    
class ClassX(QLabel):
    def __init__(self):
        super(ClassX, self).__init__()

        self.setFixedHeight(40)
        self.setMinimumWidth(600)
        self.setText('I am a Custom QLabel')
        self.variableX = 'X'

    def functionX(self):
        self.setText('I can change text')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = mainWindow()
    ex.show()
    sys.exit(app.exec_())

小提示:给按钮添加文本(比如QPushButton("点击修改文本")),能更直观地测试功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:03:10