У меня есть скрипт Python, который использует Tkinter для графического интерфейса.Мой маленький скрипт должен создавать виджет Toplevel каждые X секунд.Когда я запускаю свой код, первый виджет Toplevel создается успешно, но когда он пытается создать второй, происходит сбой программы.
Что я делаю, так это использую метод after для вызова функции startCounting каждые 5 секунд вместе с основной цепью root.Каждый раз, когда вызывается эта функция, я добавляю объект виджета Toplevel в список и запускаю новый поток, который, будем надеяться, будет запускать новый основной цикл.
Я был бы очень признателен, если бы кто-то мог разобраться с этой проблемой.Кстати, это всего лишь небольшой сценарий, который я сейчас использую для решения своей проблемы, который мешает мне продолжить мой настоящий школьный проект.
Код:
import threading,thread
from Tkinter import *
def startCounting():
global root
global topLevelList
global classInstance
topLevelList.append (Toplevel())
topLevelList[len(topLevelList)-1].title("Child")
classInstance.append(mainLoopThread(topLevelList[len(topLevelList)-1]))
root.after(5000,startCounting)
class mainLoopThread(threading.Thread):
def __init__(self,toplevelW):
self.toplevelW = toplevelW
threading.Thread.__init__(self)
self.start()
def run(self):
self.toplevelW.mainloop()
global classInstance
classInstance = []
global topLevelList
topLevelList = []
global root
root = Tk()
root.title("Main")
startCounting()
root.mainloop()