Нужна помощь со считыванием значений чекбоксов

Andrey6570

Новичок
Пользователь
Янв 25, 2021
6
0
1
Прошу помочь с решением проблемы.

У меня выводяться чекбоксы с помощью цикла, их число зависит от количества листов эксельки, но это не важно.
Не могу считать значение этих чекбоксов для дальнейшей обработки - нужно создать список из тех листов (чекбоксов), которые будут выбраны.

Python:
class SheetsList:
    def __init__(self, master, title, row, column):
        self.var = tk.BooleanVar()
        self.var.set(0)
        self.title = title
        self.row = row
        self.column = column
        self.cb = tk.Checkbutton(master, text=title, variable=self.var, onvalue=1, offvalue=0, bg="cyan3", )
        self.cb.grid(row=row, column=column, rowspan=2, padx=5, pady=5, sticky="nw")


def file_check():
    global wb, sheet_names, quantity_sheets, checks, sheet

    print(filename)
    wb = load_workbook(filename)

    quantity_sheets = len(wb.sheetnames)
    sheet_names = [wb.sheetnames]
    checks = []
    c = 0
    r = -1
    for i in range(0, quantity_sheets):
        sheet[i] = wb.sheetnames[i]
        if r < 4:
            r += 1
        else:
            r = 0
            c += 1

        checks.append(SheetsList(app.frame2, sheet[i], r, c))
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 648
472
83
зачем вам функция вне класса? зачем вам глобальные переменные?
пример получения чек боксов, к чекбоксам привязываются переменные, по этим переменным можно определить, какие флаги были выбраны, отсчет флагов начинается с нуля
Python:
import tkinter as tk

def check_value():
    s = 'Выбраны флаги: '
    lst = [var_check1, var_check2, var_check3, var_check4, var_check5]
    for i in lst:
        if i.get() == 1:
            s += str(i) + ','
    lab['text'] = s

root = tk.Tk()

var_check1 = tk.IntVar()
var_check2 = tk.IntVar()
var_check3 = tk.IntVar()
var_check4 = tk.IntVar()
var_check5 = tk.IntVar()

check1 = tk.Checkbutton(root, text='1', variable=var_check1)
check2 = tk.Checkbutton(root, text='2', variable=var_check2)
check3 = tk.Checkbutton(root, text='3', variable=var_check3)
check4 = tk.Checkbutton(root, text='4', variable=var_check4)
check5 = tk.Checkbutton(root, text='5', variable=var_check5)

lab = tk.Label(root)

button = tk.Button(root, text='Получить список чекбоксов', command=check_value)

check1.pack()
check2.pack()
check3.pack()
check4.pack()
check5.pack()
button.pack()
lab.pack()

root.mainloop()
 

Форум IT Специалистов