提高 tkMessageBox

4

我使用tkMessageBox.showinfo(在tutorialspoint上了解更多信息)来在我的程序中弹出警告。

问题只会在第二个TopLevel窗口(除主窗口外)上调用警告时发生:在这种情况下,警告将被隐藏在第二个TL窗口后面。

我尝试这样调用:

tkMessageBox.showinfo(title='Warning',message=s).lift()

但是它没有起作用。有什么想法吗?
2个回答

6

我认为消息框只能保证出现在其父级窗口之上。如果您创建了第二个toplevel窗口,并希望消息框位于该窗口之上,请将该窗口设置为消息框的父级。

tl2 = tk.Toplevel(...)
...
tkMessageBox.showinfo("Say Hello", "Hello World", parent=tl2)

在我的情况下,parent=...,解决了顶层窗口无缘无故关闭/终止/(隐藏?)的问题。这也是一个被忽略的问题。感谢您提供的解决方案! - Melroy van den Berg

1

我没有看到你所描述的问题。我下面编写的代码只是创建一个窗口所需的最小代码,该窗口创建第二个窗口。第二个窗口使用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位)测试的。它会产生类似这样的东西:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接