0

每次我在我的应用程序中使用此代码时:

tkMessageBox.showinfo("Test", "Info goes here!")

弹出一个消息框(就像它应该的那样),但是在我单击“确定”后,该框与窗口上的大多数其他小部件一起消失了。如何防止其他小部件消失?


这是我的代码

from Tkinter import *
import tkMessageBox
root = Tk()
root.minsize(600,600)
root.maxsize(600,600)
p1 = Label(root, bg='blue')
p1.place(width=600, height=600)
b1 = Button(p1, text="Test Button")
b1.place(x="30", y="50")
tkMessageBox.showinfo("Test", Info")
root.mainloop()
4

1 回答 1

1

好的,这里有一些问题。首先,您的标签没有与之关联的字符串或图像。因此,它的宽度和高度会很小。因为您使用 pack,包含的小部件(根窗口)将“缩小以适应”此小部件和您在根窗口中打包的任何其他小部件。

其次,您使用 place 作为按钮,这意味着它的大小不会影响父级的大小。不仅如此,您还可以将按钮放在非常小的标签内。因此,唯一控制父级大小的是标签,因此主窗口最终变得非常小。

您还有另一个问题是您在进入事件循环之前显示对话框。我有点惊讶它甚至可以工作,但 Tkinter 有时会在幕后做一些不寻常的事情。您应该在调用对话框之前进入事件循环。

尝试将此代码变体作为起点:

from Tkinter import *
import tkMessageBox
def showInfo():
    tkMessageBox.showinfo("Test","Info")

root = Tk()
p1 = Label(root, bg='blue', text="hello")
p1.pack()
b1 = Button(root, text="Test Button", command=showInfo)
b1.pack()
root.mainloop()
于 2010-10-20T16:46:44.607 回答