私のコードでは、メインウィンドウがイベント信号を放射しています。これは子ウィンドウで捕捉され、ラベルに変更が表示されます。しかし、最後の子ウインドウだけがイベント信号をキャッチし、そのラベルを変更します。どうしましたか?呼び出しbind
すべての子ウィンドウでTkinterイベントがtrigredされません。
from Tkinter import *
from threading import Timer as tt
class main(Tk):
def __init__(self):
Tk.__init__(self)
tt(.5,self.timedsig).start()
for i in range (5):
child(self,i)
def timedsig(self):
self.event_generate("<<timedsig>>")
tt(.5,self.timedsig).start()
class child(Toplevel):
def __init__(self,master,num):
Toplevel.__init__(self)
self.title(str(num))
self.num=num
self.var=IntVar()
self.var.set(0)
Label(self,textvariable=self.var).pack()
self.master=master
self.master.bind("<<timedsig>>",self.changelabel)
def changelabel(self,e):
print self.num,self.var.get()
self.var.set(self.var.get()+1)
if __name__=="__main__":
main().mainloop()
私はあなたがイベントに単一の関数をバインドできると思うので、特定のイベントの最後のバインドだけが適用されます。 – FamousJameous