我将QTableWidget用作用户的I / O功能。如果用户更改一个输入单元格,则应该更新输出单元格。
这可以通过cellChanged
信号来实现。
现在的问题是,根据documentation,我可以在括号cellchanged(row, column)
中指定要在更改时发出信号的单元格,但这确实会导致TypeError native Qt signal is not callable
(如果使用)在python中。
但是如果我在没有括号的情况下实现cellChanged
,则程序将陷入循环:
输入单元已更改->信号发送->输出单元已更改->信号发送->输出单元已更改->无穷大
我尝试实现一个计数器,但这仅适用于更改一个输出单元,而不是连续多个,因为代码永远无法更改第二个输出单元。
问题:我如何以仅更改QTableWidget内部的单个特定 QTableWidgetItem的方式实现cellChanged
并发出多个QTableWidgetItem的信号
以伪代码为例:
class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
uic.loadUi("ui_file.ui", self)
self.show()
self.table_widget.cellChanged.connect(self.update_table_widget)
def update_table_widget(self):
item_1 = QtWidgets.QTableWidgetItem(str(value_1))
item_1.setFlags(item_1.flags() & ~QtCore.Qt.ItemIsEditable)
self.table_widget.setItem(row_1, column, item_1)
item_2 = QtWidgets.QTableWidgetItem(str(value_2))
item_2.setFlags(item_2.flags() & ~QtCore.Qt.ItemIsEditable)
self.table_widget.setItem(row_2, column, item_2)