Форум сайта python.su
0
Тема, скорее всего, избитая, но всё же:
Есть глубоко вложенная таблица. Вызывается метод, который через threading.Timer запускает два других метода, каждый из которых меняет фоновый цвет ячейки таблицы. Сначала срабатывает один метод, затем - второй. Однако после срабатывания второго метода перерисовка таблицы не происходит. update(), repaint() - не срабатывают, окно обновляется только тогда, когда само пожелает. Код:
def Select_Body(self, x, y): t = threading.Timer(1, self.Select_b, (x, y)) t.start() t2 = threading.Timer(2, self.Unselect_b, (x, y)) t2.start() def Select_b(self, x, y): self.body.item(x, y).setBackground(self.check_color) self.window.repaint() def Unselect_b(self, x, y): self.body.item(x, y).setBackground(self.standart_color) self.window.repaint()
В последнем случае ячейка таблицы, как и ожидалось, меняет цвет 2 раза, с промежутком в секунду.def Select_Gene(self, creature_id, numgen): self.ch_column=numgen self.ch_creature_id=creature_id t = threading.Timer(1, self.Select_g) t.start() t2 = threading.Timer(2, self.Unselect_g) t2.start() def Select_g(self): el=self.result[self.ch_creature_id].item(2, self.ch_column) el.setBackground(self.check_color) self.window.repaint() def Unselect_g(self): el=self.result[self.ch_creature_id].item(2, self.ch_column) el.setBackground(self.standart_color) self.window.repaint()
Офлайн
0
Вот так работает:
self.setUpdatesEnabled(False) #тут какие-то действия с перерисовкой self.setUpdatesEnabled(True) self.update()
Офлайн