2015-02-28 2 views
0

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

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

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

 
elif "cancel": 
 
    return 
 
else: 
 
    pass

ответ

2

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

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

В заключение, «Да» дает True, «Нет» выходы False и «ОТМЕНА» урожаи None.

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

if result is None: 
    ... 
+0

Спасибо! Я добавил новый инструмент на свой пояс. – Qubit1028

+0

На самом деле, когда я обновил код выше с помощью «elif None:», он по-прежнему не вел себя правильно. Казалось, что он все еще обрабатывает любую кнопку, кроме «да», как «ложь». – Qubit1028

+0

Это не может работать; вам все равно нужно провести там сравнение, что, по вашему мнению, соответствует логическому значению 'None'? ;) Поэтому просто присвойте результат сообщениям переменной переменной и вставьте «если результат« Нет ». – TidB

Смежные вопросы