You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于tkinter.messagebox中default参数正确取值的技术咨询

Tkinter messagebox default参数正确取值说明

你遇到的问题核心是选了和对话框按钮不匹配的default参数值:

askokcancel这个对话框只有「OK」和「Cancel」两个按钮,所以default参数只能指定这两个选项,不能用yes或者tk.YES——因为这个对话框里根本没有Yes按钮,Tcl解释器自然会报错。

不同对话框对应的有效default取值:

  • askokcancel:仅支持 "ok" 或 "cancel"
  • askyesno/askyesnocancel:支持 "yes"、"no"(后者还可加 "cancel")
  • askretrycancel:支持 "retry" 或 "cancel"
  • showerror/showinfo/showwarning:默认只有OK按钮,无需指定default

修正后的示例代码:

import tkinter as tk
import tkinter.messagebox as messagebox

root = tk.Tk()

def confirmExit():
    # 正确指定default为"ok"或"cancel"
    mbox = messagebox.askokcancel("Quit", "Shut down?", icon="question",
                                  default="ok")
    if mbox:
        root.destroy()

root.protocol('WM_DELETE_WINDOW', confirmExit)
root.mainloop()

错误原因补充:

  • 错误1里用"yes",但askokcancel没有这个按钮,Tcl环境不识别,直接报错;
  • 错误2里用tk.YES,它对应的是数值1,而Tcl要求的是字符串格式的按钮名称(比如"ok"),所以也会触发错误。

内容的提问来源于stack exchange,提问作者Sun Bear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 23:47:14