Python 3 Tkinter - Messagebox with poplar as a wizard?

I found that when the toplevel widget calls up a dialog box with a message (for example, "showinfo"), a root window appears on top of the top level. Is there a way to set the Toplevel window as a message dialog wizard?

Here is a script to reproduce this:

# -*- coding:utf-8 -*- # PYTHON 3 ONLY from tkinter import * from tkinter import messagebox root = Tk() root.title('ROOT WINDOW') Label(root, text = 'Place the toplevel window over the root window\nThen, push the button and you will see that the root window is again over the toplevel').grid() topWindow = Toplevel(root) topWindow.title('TOPLEVEL WINDOW') Label(topWindow, text = 'This button will open a messagebox but will\ndo a "focus_force()" thing on the root window').grid() Button(topWindow, text = '[Push me !]', command = lambda: messagebox.showinfo('foo', 'bar!')).grid() # -- root.mainloop() 
+4
source share
2 answers

You can set the parent argument to topWindow for the showInfo :

 Button(..., command=lambda: messagebox.showInfo(parent=topWindow, ...)) 

See also:

+3
source

This may apply to more current versions.

 #TEST AREA forcommands/methods/options/attributes #standard set up header code 2 from tkinter import * from tkinter import messagebox root = Tk() root.attributes('-fullscreen', True) root.configure(background='white') scrW = root.winfo_screenwidth() scrH = root.winfo_screenheight() workwindow = str(1024) + "x" + str(768)+ "+" +str(int((scrW-1024)/2)) + "+" +str(int((scrH-768)/2)) top1 = Toplevel(root, bg="light blue") top1.geometry(workwindow) top1.title("Top 1 - Workwindow") top1.attributes("-topmost", 1) # make sure top1 is on top to start root.update() # but don't leave it locked in place top1.attributes("-topmost", 0) # in case you use lower or lift #exit button - note: uses grid b3=Button(root, text="Egress", command=root.destroy) b3.grid(row=0,column=0,ipadx=10, ipady=10, pady=5, padx=5, sticky = W+N) #____________________________ root.withdraw() mb1=messagebox.askquestion(top1, "Pay attention: \nThis is the message?") messagebox.showinfo("Say Hello", "Hello World") root.deiconify() top1.lift(aboveThis=None) #____________________________ root.mainloop() 
+1
source

Source: https://habr.com/ru/post/1493951/