#!/usr/bin/python
from Tkinter import *
from tkSimpleDialog import Dialog
from time import sleep
import threading
class AnimThread(threading.Thread):
def __init__(self,canvas):
threading.Thread.__init__(self)
self.canvas=canvas
self.item=self.canvas.create_oval(0,0,64,64,fill="blue" )
def run(self):
self.anim=True
state=0
while(self.anim):
state=[1,0][state]
self.canvas.itemconfigure(self.item,state=[HIDDEN,NORMAL][state])
self.canvas.update_idletasks()
sleep(.2)
def stop(self):
self.anim=False
class AnimWidget(Canvas):
def __init__(self,master):
Canvas.__init__(self,master=master,bd=1,width=64,height=64)
self.thread=AnimThread(self)
self.start()
def start(self):
"""start the thread"""
self.thread.start()
def stop(self):
"""stop the thread"""
self.thread.stop()
while(self.thread.isAlive()):
pass
self.thread=None
class MyDialog(Dialog):
def __init__(self,master):
Dialog.__init__(self,parent=master,title="titre" )
def cancel(self, event=None):
self.anim.stop()
Dialog.cancel(self,event)
def body(self, master):
self.anim=AnimWidget(master)
self.anim.pack()
class Application(Tk):
def __init__(self):
Tk.__init__(self)
self.mainframe=self
self.anim=AnimWidget(self)
self.anim.pack()
self.btn=Button(self,text="dlg",command=self.opendialog)
self.btn.pack()
def opendialog(self):
dlg=MyDialog(self)
if __name__ == '__main__':
app = Application()
app.mainloop()
|