How to keep a Tkinter-Dialog on top of all other windows?

Thomas Nücker thomas.nuecker at web.de
Wed Jul 2 08:35:12 EDT 2003


Hi!

I am creating a dialog-box within my application, using tkinter. The
problem is the following: After the dialogbox is started, the main
application window comes again to top and the dialogbox is covered by
the window of the main application and must be "fetched" again via the
taskbar to continue. Is there a way to "force" the dialogbox on top of
all other windows? (I'm using MSWindows and Python22)

The source of my dialogbox-class is the following:

class NumberEntry:
	def __init__(self):
		import Tkinter
		from Tkconstants import RIDGE
		from Tkconstants import BOTH
		from Tkconstants import BOTTOM
		from Tkconstants import ACTIVE
		from Tkconstants import LEFT
		from Tkconstants import W
		from Tkconstants import E
		self.tk = Tkinter.Tk()
		self.tk.title("My Dialog")
		frame = Tkinter.Frame(self.tk, borderwidth=2)
		frame.pack(fill=BOTH,expand=1)
		
		label=Tkinter.Label(frame, text="Telefonnummer:")
		label.pack(fill=BOTH,expand=1)
		
		self.entry = Tkinter.Entry(frame, name="entry")
		self.entry.pack(fill=BOTH,expand=1)
		
		box = Tkinter.Frame()
		w = Tkinter.Button(box, text="OK", width = 10, command=self.OnOk,
default = ACTIVE)
		w.pack(side=LEFT, padx=5, pady=5)
		w = Tkinter.Button(box, text="Cancel", width=10,
command=self.OnCancel)
		w.pack(side=LEFT, padx=5, pady=5)
		box.pack()
                
                # try to keep focus on current dialog box
		self.tk.focus_set()
		self.tk.mainloop()
	def OnOk(self):
		self.result = self.entry.get()
		self.tk.destroy()
	def OnCancel(self):
		self.tk.destroy()
	result = ""




More information about the Python-list mailing list