У меня есть пара TextInputs с флажком рядом с ними. Я хочу просмотреть их (нажмите Tab> go, чтобы перейти к следующему вводу текста без флажка. Введите значение и нажмите Enter> go, чтобы перейти к следующему вводу текста и установите флажок). Все это работает путем настройки этого определения TextInput:
<TextInput>:
multiline: False
size_hint_x: None
padding_y: [self.height / 2.0 - (self.line_height / 2.0) * len(self._lines), 0] #centers middle
halign: 'center'
write_tab: False
input_type: 'number'
input_filter: 'int'
Кроме того, я сделал некоторые вещи, такие как разрешить только ввод числа и центрирование текста, как вы можете видеть. Мои настоящие CheckBox и TextInputs выглядят так:
CheckBox:
id: gre3
on_active: root.change_gain(*args, gre3Val.text)
TextInput:
id: gre3Val
hint_text: 'Green #4 Gain [%]'
on_text_validate:
gre3.trigger_action() if self.text != '' else 0
red4Val.focus = True if self.text != '' else 0
, из которого я вызываю эту функцию:
def change_gain(self, *argv):
checkBox = self.getID(argv[0]) #this simply returns the actual id of the object
checkBoxValue = argv[1] #True/False
gainValue = argv[2] #int
if int(gainValue) >= 100:
gainValue = 100
tempObj = checkBox + 'Val'
self.ids[tempObj].text = '100'
# if color == 'red':
# print('Not yet implemented')
# #change_laser(s, )
print(checkBox)
print(checkBoxValue)
print(gainValue)
if checkBox[0:3] == 'red':
tempColor = 'Red'
elif checkBox[0:3] == 'gre':
tempColor = 'Green'
else:
tempColor = 'Blue'
tempNo = int(checkBox[3])
if checkBoxValue:
self.statusText = tempColor + ' #' + str(tempNo+1) + ' enabled ' + '(' + str(gainValue) + ' %)'
else:
self.statusText = tempColor + ' #' + str(tempNo+1) + ' disabled'
Функция еще не завершена. Тем не менее, вы можете видеть, что я ограничил ввод до 100. Теперь моя проблема: когда я в поле TextInput, которое связано с уже установленным флажком и обновляет значение, флажок становится не отмеченным , потому что способа я связываю оба виджета (checkboxName.trigger_action ()). Есть ли лучший способ для этого, поэтому я вызываю связанное действие флажка и проверяю его?