Я сделал проверку для виджета ввода (Tkinter) - только принять: значение в диапазоне (1, 101) и пустую строку.
gui part:
entry_hp_treshold_3 = tk.Entry(tab2, width='4', justify='right', validate='key', validatecommand=(validation2, '%P'))
entry_hp_treshold_3.grid(row=2, column=1, padx=0, pady=5)
( 1) функция проверки:
def entry_validation_2(string):
if string == '':
return True
elif int(string) in range(1, 101):
return True
else:
return False
(2) я пытался написать функцию проверки в одну строку:
def entry_validation_2(string):
return int(string) in range(1, 101) or string == ''
и получил: ValueError: недопустимый литерал для int ( ) с основанием 10: '
(3) Я заставил его работать, изменив код функции на:
def entry_validation_2(string):
return string == '' or int(string) in range(1, 101)
(4) Я забыл добавить проверку, если символ является ди git, поэтому первый код должен быть:
def entry_validation_2(string):
if string == '':
return True
elif string.isdigit() and int(string) in range(1, 101):
return True
else:
return False
Мой вопрос:
Как записать его в одну строку как пример (3) и избежать проблемы с пустой строкой? Я не думаю, что код example (3) хорош, если изменение порядка вызывает ошибку. Какой правильный подход?