(Tkinter) Adding delay to PopUpMsg

Harlin Seritt harlinseritt at yahoo.com
Fri Mar 18 02:40:20 EST 2005


I am working on making something called a PopMsg widget which is
actually identical to a Balloon widget from Pmw. Here is the code:

---code---
from Tkinter import *
import time

class PopMsg:

	def showmsg(self, event):
		for a in range(10000000): pass
		self.t.deiconify()
		self.t.geometry(str(self.msg.winfo_reqwidth())+'x'+str(self.msg.winfo_reqheight())+'+'+str(event.x_root)+'+'+str(event.y_root))
		self.widget.bind('<Leave>', self.hide)
		time.sleep(0.001)

	def hide(self, event):
		self.t.withdraw()

	def __init__(self, parent, widget, text=None):

		self.parent=parent
		self.widget=widget
		self.text=text
		self.t = Toplevel()
		self.t.withdraw()
		self.t.overrideredirect(1)
		self.msg = Message(self.t
			, text=self.text
			, bg='white'
			, border=1
			, relief=SOLID
			, aspect=250)
		self.msg.pack(ipadx=10, ipady=5)
		self.parent.unbind('<Enter>')
		self.parent.focus()
		self.widget.bind('<Enter>', self.showmsg)


def printhello():
	print 'Hello'

root = Tk()
button = Button(root, text='Hello !', command=printhello)
button.pack(padx=10, pady=10)
p = PopMsg(root, button, text='Some messaging text can go here.')

root.mainloop()

---End Code---

My problem you'll notice is that I tried to put something of a 'delay'
that will allow the popup to show a few seconds after the cursor has
entered the targeted widget's space (in this case the button). That
works ok but I've found that while waiting I can't activate (or
'click') on the button until the PopMsg has shown up. Is there anything
I can do to solve this problem?

thanks,

Harlin Seritt




More information about the Python-list mailing list