Python tkMessageBox.askyesnocancel - 3 варианта, логический вывод?

Документация, которую я видел на tkMessageBox кажется, указывает на логическое возвращение для выбора пользователя на askyesnocancel Диалог. Есть 3 варианта, так как логическое значение может правильно захватить выбор пользователя?

Я попробовал подход, показанный ниже, где "yes" возвращает "True", "no" возвращает "False", а "cancel" возвращает "отмену", но, похоже, это не работает. Выбор "нет" или "отмена", кажется, возвращается как "Ложь". У кого-нибудь есть идеи по этому поводу?

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

elif "cancel":
    return
else:
    pass

1 ответ

Решение

На самом деле, нажав Cancel возвращается None, Просто проверьте это с этой строкой:

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

В заключение, "да" дает True"Нет" дает Falseи "Отмена" дает None,

Проблема у вас там, что оба логическое значение None является False, тоже. Вы должны явно проверить None:

 if result is None:
     ...
Другие вопросы по тегам