每次我在应用程序中使用这些代码时:
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()发布于 2010-10-20 16:46:44
好吧,这里有一些事情出了问题。首先,您的标签没有与其关联的字符串或图像。因此,它的宽度和高度将非常小。因为您使用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()https://stackoverflow.com/questions/3974512
复制相似问题