仅当特定单元格发生更改时才从cellChanged发出信号

时间:2019-07-05 09:30:50

标签: python python-3.x pyqt pyqt5

我将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)

0 个答案:

没有答案