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

PyQt5按钮点击调用函数报错:TypeError: native Qt signal is not callable

解决PyQt5中TypeError: native Qt signal is not callable错误

我一眼就看到你代码里的问题了,问题出在按钮点击事件的绑定方式上,咱们一步步拆解:

错误根源

你写了这一行代码:

self.Button.clicked(self.BtnClicked())

这犯了两个PyQt信号槽绑定的典型错误:

  1. clicked是PyQt的原生信号,不是普通可调用函数,不能直接像调用普通函数那样传参数执行;
  2. self.BtnClicked()是直接调用了这个函数,把它的返回值(这里是None)传给了clicked,完全不符合信号与槽的绑定逻辑。

修正方案

正确的做法是用connect()方法把信号和槽函数绑定起来,而且要传递函数对象(注意不要加括号),把那行错误代码改成:

self.Button.clicked.connect(self.BtnClicked)

完整可运行的修正代码

我还给你补全了缺失的导入语句,以及规范的脚本入口判断:

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication

class MyFirstWindow(QMainWindow):
    def __init__(self):
        self.Label = None
        self.Button = None
        super(MyFirstWindow, self).__init__()
        self.setGeometry(200, 200, 500, 500)
        self.setWindowTitle("My First Window GUI Application")
        self.ShowWidgets()
    def ShowWidgets(self):
        try:
            self.Label = QtWidgets.QLabel(self)
            self.Button = QtWidgets.QPushButton(self)
            self.Label.setText("My Name is Umair!")
            self.Label.move(170,70)
            self.Button.setText("Click Here")
            self.Button.move(160,30)
            # 修正后的信号槽绑定
            self.Button.clicked.connect(self.BtnClicked)
        except Exception as e:
            print(str(e))
    def BtnClicked(self):
        self.Label.setText("Label Text is Changed")
def ShowWindow():
    app = QApplication(sys.argv)
    win = MyFirstWindow()
    win.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    ShowWindow()

额外小技巧

如果你的槽函数需要传递自定义参数,可以用lambda表达式来实现,比如:

# 绑定带参数的槽函数
self.Button.clicked.connect(lambda: self.BtnClicked("点击后修改的文本"))

# 对应的槽函数修改为接受参数的形式
def BtnClicked(self, new_text):
    self.Label.setText(new_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:42:29