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

