Форум сайта python.su
Приветствую всех.
Когда я впервые попытался использовать чекбоксы, у меня получились чекбоксы с третьим, неопределённым исходным состоянием. Сейчас я практически настроил работу с чекбоксами, их обработку.
DataEntrBounch = [] # Список полей ввода ProptyRow = ['0','','',1] # Список индексов и флагов index = 0 # Считаем поля ввода for col_name, col_nickname in headers.items(): # Для каждого заголовка полей ввода if index < 4: DataEntrBounch.append(IntVar(master=Add_data_frame, value=ProptyRow[index])) # Добавляем в список переменную для чекбокса ChckBttn = ttk.Checkbutton(Add_data_frame, text=col_nickname, variable=DataEntrBounch[index], command= lambda i=index: Fn_PropRowCollect(i,DataEntrBounch[i].get())) # Создаём чекбокс ChckBttn.grid(row=int(index/2),column=(index % 2),sticky='w') # Размещаем чекбокс во фрейме index += 1 # Переходим к следующему полю
Отредактировано Alex.Pro. (Янв. 12, 2025 14:35:38)
Офлайн
Прошу у всех прощения за беспокойство, но мне наконец-то удалось решить вопрос.
1) Для начала создаём не инициализированные чекбоксы. Команда для мгновенного реагирования на изменение состояния чекбокса мне не нужна. При этом ни IntVar, ни StringVar создавать нет необходимости.
DataEntrBounch = [] # Список полей ввода index = 0 # Считаем поля ввода for col_name, col_nickname in headers.items(): # Для каждого заголовка полей ввода if index < 4: ChckBttn = ttk.Checkbutton(Add_data_frame, text=col_nickname) # Создаём чекбокс ChckBttn.grid(row=int(index/2),column=(index % 2),sticky='w') # Размещаем чекбокс во фрейме DataEntrBounch.append(ChckBttn) # Добавляем чекбокс в список index += 1 # Переходим к следующему полю
for i in range(4): if 'alternate' in DataEntrBounch[i].state(): print('Не определено!') #return elif 'selected' in DataEntrBounch[i].state(): print('Выбрано') else: print('Не выбрано')
Офлайн