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

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

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

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

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

Если разбираетесь в tkinter, буду благодарен за Вашу помощь!
Голосование за лучший ответ
Марк Филатов Знаток (492) 1 год назад
Вы можете использовать метод 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

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