我使用tkMessageBox.showinfo(在tutorialspoint上了解更多信息)来在我的程序中弹出警告。
问题只会在第二个TopLevel窗口(除主窗口外)上调用警告时发生:在这种情况下,警告将被隐藏在第二个TL窗口后面。
我尝试这样调用:
tkMessageBox.showinfo(title='Warning',message=s).lift()
但是它没有起作用。有什么想法吗?
我使用tkMessageBox.showinfo(在tutorialspoint上了解更多信息)来在我的程序中弹出警告。
问题只会在第二个TopLevel窗口(除主窗口外)上调用警告时发生:在这种情况下,警告将被隐藏在第二个TL窗口后面。
我尝试这样调用:
tkMessageBox.showinfo(title='Warning',message=s).lift()
我认为消息框只能保证出现在其父级窗口之上。如果您创建了第二个toplevel窗口,并希望消息框位于该窗口之上,请将该窗口设置为消息框的父级。
tl2 = tk.Toplevel(...)
...
tkMessageBox.showinfo("Say Hello", "Hello World", parent=tl2)
我没有看到你所描述的问题。我下面编写的代码只是创建一个窗口所需的最小代码,该窗口创建第二个窗口。第二个窗口使用showinfo
方法创建信息框。我想知道你是否有除此之外的其他问题。(请注意,我将窗口设置得相当大,以尝试覆盖信息窗口。)
from Tkinter import Tk, Button, Toplevel
import tkMessageBox
top = Tk()
def make_window():
t = Toplevel(top)
t.title("I'm Window 2. Look at me too!")
B2 = Button(t, text = "Click me", command = hello)
B2.pack()
t.geometry('500x500+50+50')
def hello():
tkMessageBox.showinfo("Say Hello", "Hello World")
B1 = Button(top, text = "New Window", command = make_window)
B1.pack()
top.title("I'm Window 1. Look at me!")
top.geometry('500x500+100+100')
top.mainloop()
这是在Windows 7(64位)上使用Python 2.7(32位)测试的。它会产生类似这样的东西:
parent=...
,解决了顶层窗口无缘无故关闭/终止/(隐藏?)的问题。这也是一个被忽略的问题。感谢您提供的解决方案! - Melroy van den Berg