Python tkMessageBox.askyesnocancel - 3个选项,布尔输出?

时间:2015-02-28 14:44:56

标签: python tkinter tkmessagebox

我在tkMessageBox上看到的文档似乎表明在askyesnocancel对话框中用户选择的布尔返回。有3个选项,那么布尔值如何正确捕获用户选择?

我尝试过下面显示的方法,其中“yes”返回“True”,“no”返回“False”,“cancel”返回“cancel”,但这似乎不起作用。 “否”或“取消”选择似乎都返回为“假”。有人对此有什么想法吗?

if tkMessageBox.askyesnocancel("Error", "Choose yes, no or cancel", default='yes')
    ...
    ...
    ...

elif "cancel":
    return
else:
    pass

1 个答案:

答案 0 :(得分:4)

实际上,点击Cancel会返回None。用这一行测试一下:

repr(tkMessageBox.askyesnocancel("wa", "wa"))

总之,"是"收益率True,"否"收益率False和"取消"收益率None

你遇到的问题是None的布尔值也是False。您必须明确检查None

 if result is None:
     ...