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

Python中QT TableWidget的cellClicked绑定错误致GUI崩溃,如何解决?

解决QTableWidget点击时程序崩溃的问题

你代码里的信号槽绑定方式错误,Qt中不能直接将槽函数作为参数传给信号对象,这是导致程序崩溃的核心原因。

修改方法

把引发错误的那一行:

self.tableView_movies.cellClicked(self.func_test)

替换为:

self.tableView_movies.cellClicked.connect(self.func_test)

原因说明

cellClicked是QTableWidget的内置信号,当单元格被点击时会自动触发。Qt的信号槽机制要求通过connect方法来完成信号与槽函数的绑定,这样才能在信号触发时正确将行、列参数传递给槽函数并执行逻辑。

修改后的完整代码片段

class Ui_MainWindow(object):
    # Variables
    movie_results = []

    def setupUi(self, MyResultWindow):
        MyResultWindow.setObjectName("MainWindow")
        MyResultWindow.resize(800, 616)
        self.centralwidget = QtWidgets.QWidget(MyResultWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.tableView_movies = QtWidgets.QTableWidget(self.centralwidget)
        self.tableView_movies.setGeometry(QtCore.QRect(10, 10, 331, 581))
        self.tableView_movies.setObjectName("tableView_movies")

        MyResultWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MyResultWindow)
        # 修正后的信号槽绑定
        self.tableView_movies.cellClicked.connect(self.func_test)
        QtCore.QMetaObject.connectSlotsByName(MyResultWindow)


    def func_test(self, row, column):
        print(f"点击了第{row}行,第{column}列")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:35:44