[英]issue with tkinter messagebox
我在我的代码中使用了几个 tkinter 消息框。 但是我注意到我在代码中使用的showinfo
消息框有问题。 基本上,我希望在按下消息框上的ok
时调用一个函数。 此外,用户可以通过关闭消息框来选择不继续。 但是,看起来当我按 x 图标关闭消息框时,该函数仍然被调用。 这是一个最低限度的可重现代码来解释我的意思。
from tkinter import *
from tkinter import messagebox
root = Tk()
def func() :
Label(root,text="This is the text").pack()
msg = messagebox.showinfo("Loaded","Your saved state has been loaded")
if msg == "ok" :
func()
root.mainloop()
我的问题是,我应该怎么做才能在按下 x 图标时不调用该函数?
有不同类型的messagebox
,您在此处使用的那个不是您实际应该为您的案例使用的。 您想要的是名为askyesno
东西,或者以“ask”为前缀的东西,因为您的代码取决于用户的操作。 所以你想“询问”用户,比如:
from tkinter import *
from tkinter import messagebox
root = Tk()
def func() :
Label(root,text="This is the text").pack(oadx=10,pady=10)
msg = messagebox.askyesno("Loaded","Your saved state has been loaded")
if msg: #same as if msg == True:
func()
root.mainloop()
在这里,如果您单击“是”按钮, askyesno
与其他“ask”前缀函数一样将返回True
或1
,否则它将返回False
或0
。
也只是我现在意识到的一些事情, showinfo
,就像其他showinfo
'show' 前缀的消息框函数一样,无论您按下按钮还是关闭窗口,都会返回'ok'
。
一些更多'ask'前缀的消息框~ askokcancel
, askquestion
, askretrycancel
, askyesnocancel
。 看看这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.