Python tkMessageBox.askyesnocancel -- 3个选项,布尔输出?
Python tkMessageBox.askyesnocancel -- 3 options, boolean output?
我在 tkMessageBox
上看到的文档似乎表明一个布尔值 return 供用户在 askyesnocancel
对话框中选择。有 3 个选项,那么布尔值如何正确捕获用户选择?
我尝试了下面显示的方法,其中 "yes" returns "True"、"no" returns "False" 和 "cancel" returns "cancel",但这似乎不起作用。 "no" 或 "cancel" 选项似乎都被 return 编辑为 "False"。有人对此有任何想法吗?
if tkMessageBox.askyesnocancel("Error", "Choose yes, no or cancel", default='yes')
...
...
...
elif "cancel":
return
else:
pass
实际上,点击 Cancel
returns None
。只需用这一行进行测试:
repr(tkMessageBox.askyesnocancel("wa", "wa"))
总之,"Yes" 产生 True
,"No" 产生 False
,"Cancel" 产生 None
。
你遇到的问题是 None
的布尔值也是 False
。您必须明确检查 None
:
if result is None:
...
我在 tkMessageBox
上看到的文档似乎表明一个布尔值 return 供用户在 askyesnocancel
对话框中选择。有 3 个选项,那么布尔值如何正确捕获用户选择?
我尝试了下面显示的方法,其中 "yes" returns "True"、"no" returns "False" 和 "cancel" returns "cancel",但这似乎不起作用。 "no" 或 "cancel" 选项似乎都被 return 编辑为 "False"。有人对此有任何想法吗?
if tkMessageBox.askyesnocancel("Error", "Choose yes, no or cancel", default='yes')
...
...
...
elif "cancel":
return
else:
pass
实际上,点击 Cancel
returns None
。只需用这一行进行测试:
repr(tkMessageBox.askyesnocancel("wa", "wa"))
总之,"Yes" 产生 True
,"No" 产生 False
,"Cancel" 产生 None
。
你遇到的问题是 None
的布尔值也是 False
。您必须明确检查 None
:
if result is None:
...