Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python. Библиотека tkinter

Егор Гришин Ученик (131), на голосовании 10 месяцев назад
Если плохо видно, вот ссылка на код: https://pastecode.io/s/y70of3iz

Вопрос заключается в следующем: Как проверять, что пользователь ввёл в Entry? Условно, во 2 колонке значение должно быть числом и больше 0. В 3 колонке 0 или пустая ячейка (я так подозреваю, что None?), если человек не хочет приобрести данный фрукт, и условие больше либо равно 0, соответственно.

В случае неправильного ввода я уже подготовил messagebox, но не знаю как правильно организовать 9 строку с def, который вызывается кнопкой в 57 строке.

Если разбираетесь в tkinter, буду благодарен за Вашу помощь!
Голосование за лучший ответ
Марк Филатов Знаток (492) 11 месяцев назад
Вы можете использовать метод get() для получения текста из виджета Entry. Затем вы можете проверить, удовлетворяет ли текст определенным условиям. Например, чтобы проверить, является ли текст числом и больше 0, вы можете использовать следующий код:

text = entry2.get()
if text.isdigit() and int(text) > 0:
# текст является числом и больше 0
else:
# текст не является числом или меньше или равен 0
Чтобы проверить, пусто ли поле ввода или равно 0, вы можете использовать следующий код:

text = entry3.get()
if not text or text == '0':
# поле ввода пусто или равно 0
else:
# поле ввода не пусто и не равно 0
Вы можете добавить эти проверки в функцию value и вызывать box.showerror для отображения сообщения об ошибке в случае неправильного ввода. Например:

def value():
text = entry2.get()
if not (text.isdigit() and int(text) > 0):
box.showerror('Ошибка', 'Цена должна быть числом больше 0')
return

text = entry3.get()
if not (not text or text == '0'):
box.showerror('Ошибка', 'Масса для покупки должна быть пустой или равной 0')
return

# продолжить расчет стоимости
Похожие вопросы