微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Tkinter消息框的问题

如何解决Tkinter消息框的问题

我在代码中使用了多个tkinter消息框。但是ive注意到我在代码中使用的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'前缀的函数一样返回True1,否则它将返回False0

同样,我现在意识到,showinfo与其他以'show'为前缀的消息框功能一样,会在您按下按钮或关闭窗口时返回'ok'

更多“询问”前缀的消息框〜askokcancelaskquestionaskretrycancelaskyesnocancel。看看here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。