Несколько окон верхнего уровня, использующих «после» для обновлений.Python

Программы на Python
Anonymous
Несколько окон верхнего уровня, использующих «после» для обновлений.

Сообщение Anonymous »

Я разрабатываю приложение Python Tkinter, которое может открывать несколько экземпляров окна верхнего уровня.
Следующий фрагмент проверяет, запущен ли экземпляр класса верхнего уровня, а если нет, запускает новый экземпляр. Если он существует, он выводит его на передний план.
if (ConsoleGui.winlog[pcs] is not None):
try:
ConsoleGui.winlog[pcs].lift()
except:
ConsoleGui.winlog[pcs] = ClassEpsL.CreateEspLog(Console, pcs)
else:
ConsoleGui.winlog[pcs] = ClassEpsL.CreateEspLog(Console, pcs)

Это отлично работает.
Моя проблема заключается в том, что каждый экземпляр окна верхнего уровня имеет функцию, которая запускается в цикле «после» для обновления. текстовый виджет, например
def CreateEspLog(self, pcs):
espLWin = Toplevel(self)
...
text = Text(espLWin, wrap="none", width=600, height=400)
...
def refreshEspL(self):
print("pcsNode: {}".format(ClassEpsL.pcsNode))
if MQTT.BrokerConnected:
ClassEpsL.espLogUpdate(self)
espLWin.after(200, refreshEspL, self)

espLWin.after(200, refreshEspL, self)
return espLWin

Последний экземпляр окна верхнего уровня берет на себя выполнение этого цикла от более старых, которые больше не обновляются.
I не удалось найти решение:
создать экземпляры, которые каким-то образом однозначно идентифицируются для строки:
espLWin.after(200, refreshEspL, self)

Или я могу каким-то образом вызвать оконную функцию верхнего уровня restartEspL из корневого окна, например
ConsoleGui.winlog[pcs].refreshEspL(self)


Подробнее здесь: https://stackoverflow.com/questions/790 ... or-updates

Вернуться в «Python»