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

Python tkMessageBox.askyesnocancel--3个选项,布尔输出?,python,tkinter,tkmessagebox,Python,Tkinter,Tkmessagebox,我在tkMessageBox上看到的文档似乎表示用户在askyesnocancel对话框中选择的布尔返回。有3个选项,那么布尔值如何正确捕获用户的选择呢 我尝试过下面所示的方法,其中“是”返回“真”,“否”返回“假”,“取消”返回“取消”,但这似乎不起作用。“否”或“取消”选择似乎都返回为“False”。有人对此有什么想法吗 如果tkMessageBox.askyesnocancel(“错误”,“选择是、否或取消”,默认值为“是”) ... ... ... elif“取消”: 返回 其他: 通过

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

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

如果tkMessageBox.askyesnocancel(“错误”,“选择是、否或取消”,默认值为“是”)
...
...
...
elif“取消”:
返回
其他:
通过

实际上,单击
取消
返回
。用这行代码测试一下:

repr(tkMessageBox.askyesnocancel("wa", "wa"))
总之,“是”表示
True
,“否”表示
False
,“取消”表示
None

这里的问题是
None
的布尔值也是
False
。您必须明确检查

 if result is None:
     ...

实际上,单击
Cancel
返回
None
。用这行代码测试一下:

repr(tkMessageBox.askyesnocancel("wa", "wa"))
总之,“是”表示
True
,“否”表示
False
,“取消”表示
None

这里的问题是
None
的布尔值也是
False
。您必须明确检查

 if result is None:
     ...

谢谢我在腰带上添加了一个新工具。事实上,当我用“elif None”更新上面的代码时,它仍然不能正常工作。它似乎仍然将除“是”之外的任何按钮处理为“假”;您仍然需要在那里进行比较,您认为哪个布尔值
None
对应于什么?;)因此,只需将messagebox的结果分配给一个变量,如果结果为None,则插入
。谢谢!我在腰带上添加了一个新工具。事实上,当我用“elif None”更新上面的代码时,它仍然不能正常工作。它似乎仍然将除“是”之外的任何按钮处理为“假”;您仍然需要在那里进行比较,您认为哪个布尔值
None
对应于什么?;)因此,只需将messagebox的结果分配给一个变量,如果结果为None,则插入