首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小部件在Tkinter中的tkMessageBox之后消失

小部件在Tkinter中的tkMessageBox之后消失
EN

Stack Overflow用户
提问于 2010-10-20 03:22:41
回答 1查看 2.1K关注 0票数 0

每次我在应用程序中使用这些代码时:

代码语言:javascript
复制
tkMessageBox.showinfo("Test", "Info goes here!")

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

这里是我的代码

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2010-10-20 16:46:44

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

其次,使用place作为按钮,这意味着它的大小不会影响父级的大小。不仅如此,你还把按钮放在非常小的标签里。因此,控制父窗口大小的唯一方法是标签,这样主窗口就会变得非常小。

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

尝试将代码的这一变体作为起点:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3974512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档