每次我在我的应用程序中使用此代码时:
tkMessageBox.showinfo("Test", "Info goes here!")
弹出一个消息框(就像它应该的那样),但是在我单击OK之后,该框与窗口上的大多数其他小部件一起消失。如何防止其他小部件消失?
这是我的代码:
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()
答案 0 :(得分:1)
好的,这里有一些问题。首先,您的标签没有与之关联的字符串或图像。因此,它的宽度和高度将非常小。因为您使用pack,所以包含窗口小部件(根窗口)将“缩小以适应”此窗口小部件以及您在根窗口中打包的任何其他窗口小部件。
其次,您使用按钮的位置,这意味着它的大小不会影响父级的大小。不仅如此,您还可以将按钮放在非常小的标签内。因此,控制父级大小的唯一因素是标签,因此主窗口最终非常小。
您还有另一个问题,就是在进入事件循环之前显示对话框。我有点惊讶它甚至可以工作,但是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()