Как использовать всплывающие окна «да/нет» в PySimpleGUI? Я искал везде, но ответы на этот вопрос не ясны.
На данный момент я просто пытаюсь создать простую программу «да/нет», чтобы разобраться в этом.
Вот мой код:
import PySimpleGUI as sg
import time
sg.popup("Welcome to this random file.")
result = sg.popup_yes_no("Would you like to continue?")
if (result == "yes"):
sg.popup("Great! You have chosen to continue the process.")
elif (result == "no"):
sg.popup("Exiting process...")
sg.popup("See you!")
time.sleep(3)
exit()
else:
sg.popup("Invalid input")
Вам нужно превратить yes
в Yes
и no
в No
. Вы можете найти это, распечатав результат, например:
result = sg.popup_yes_no("Would you like to continue?")
print(result)
Таким образом, исправленный код будет таким:
import PySimpleGUI as sg
import time
sg.popup("Welcome to this random file.")
result = sg.popup_yes_no("Would you like to continue?")
if (result == "Yes"):
sg.popup("Great! You have chosen to continue the process.")
elif (result == "No"):
sg.popup("Exiting process...")
sg.popup("See you!")
time.sleep(3)
exit()
else:
sg.popup("Invalid input")
Мой совет — всегда использовать какой-либо способ отладки, возможно, с помощью библиотек отладки или с помощью print
.
💗 часть «всегда использовать какую-то отладку»...... print
это золотой стандарт :-)
@MikefromPSG Спасибо... Я всегда это использую. Даже в быстром браузере (вы можете посмотреть мой раздел «О программе», если хотите знать, о чем я говорю)
@user26149746 user26149746 Пожалуйста. Не могли бы вы нажать на галочку, чтобы другие знали, что это рабочий ответ?
Как бы то ни было, я обычно использую этот вызов в операторе if
, поскольку в конечном итоге он всегда используется с if
. if sg.popup_yes_no('Do you want to continue?') != 'Yes': sg.popup('Aborting');exit()
. Редко возникает необходимость хранить в промежуточной переменной. Обычно это «Да» или что-то еще (например, «Нет» или окно было закрыто с помощью X)
Вы можете создать функцию для нормализации ввода путем преобразования ответа пользователя в стандартизированный формат. Таким образом, вы сможете более изящно обрабатывать изменения входных данных.
Вот ваш обновленный код с функцией нормализации:
import PySimpleGUI as sg
import time
def normalize_input(response):
if response.lower() == "yes":
return "Yes"
elif response.lower() == "no":
return "No"
else:
return response
sg.popup("Welcome to this random file.")
result = sg.popup_yes_no("Would you like to continue?")
# Normalize the input
normalized_result = normalize_input(result)
if normalized_result == "Yes":
sg.popup("Great! You have chosen to continue the process.")
elif normalized_result == "No":
sg.popup("Exiting process...")
sg.popup("See you!")
time.sleep(3)
exit()
else:
sg.popup("Invalid input")
popup_yes_no
вернуть"Yes"
или"No"
илиNone
, а не"yes"
или"no"
. См. docs.pysimplegui.com/en/latest/call_reference/tkinter/popups/…