runcode
@runcode

Почему клонируется?

Поставил таймер на обновления таблицы, при клике на checkbox, в консоле выдает столько копий, сколько обновилась таблица, как сделать, чтоб выдавала одну копию при клике. Спасибо
from PyQt5.QtCore import QTimer, QTime
from PyQt5.QtWidgets import QApplication, QTableWidgetItem, QTableWidget, QHBoxLayout, QWidget


class App(QWidget):

    def __init__(self):
        super().__init__()
        self.thread = None

        self.layout = QHBoxLayout(self)
        self.layout.setSpacing(0)

        self.table = QTableWidget(self)
        self.layout.addWidget(self.table)

        self.table.setColumnCount(5)
        self.table.setRowCount(5)

        self.timer = QTimer()
        self.timer.timeout.connect(self.row)
        self.timer.start(5000)

    def row(self):
        time = QTime.currentTime()
        text = time.toString('mm:ss')
        print("update table...." + time.toString('mm:ss'))

        for row in range(5):
            item_0 = QTableWidgetItem()
            item_0.setText(text)
            self.table.setItem(row, 0, item_0)

            item_1 = QTableWidgetItem()
            item_1.setText(text)
            self.table.setItem(row, 1, item_1)

            item_2 = QTableWidgetItem()
            item_2.setText(text)
            self.table.setItem(row, 2, item_2)

            item_3 = QTableWidgetItem()
            item_3.setText(text)
            item_3.setCheckState(0)
            self.table.setItem(row, 3, item_3)

        self.table.itemClicked.connect(self.item_clicked)

    def item_clicked(self, item):
        obj = self.table.item(item.row(), 1)
        print(obj.text(), item.checkState())


if __name__ == '__main__':
    qApp = QApplication([])
    app = App()
    app.resize(600, 200)
    app.show()
    qApp.exec()
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы