Вопрос по выходным параметрам чекбокса tkinter

254 просмотра
0
0 Комментариев

Доброго времени суток. Начал знакомиться с пайтоном, нашел самоучители, интересует следующий вопрос: разбирая конкретный пример с чекбоксами в Tkinter, я видел результаты выбора того или иного бокса в консоли, но так и не получилось вывести все выделенные пункты в переменную-список для дальнейшего использования в программе. Пытался на банальном примере:

from Tkinter import *
 
class Checkbar(Frame):
    def __init__(self, parent=None, picks=[], side=LEFT, anchor=W):
        Frame.__init__(self, parent)
        self.vars = []
        for pick in picks:
            var = IntVar()
            chk = Checkbutton(self, text=pick, variable=var)
            chk.pack(side=side, anchor=anchor, expand=YES)
            self.vars.append(var)
 
    def state(self):
        return [var.get() for var in self.vars]
 
root = Tk()
checkBoxBar = Checkbar(root, ['A', 'B', 'C', 'D'])
 
checkBoxBar.pack(side=TOP,  fill=X)
 
checkBoxBar.config(relief=GROOVE, bd=2)
 
def allstates():
     print checkBoxBar.state()
 
Button(root, text='Peek', command=allstates).pack(side=RIGHT)
root.mainloop()

Строка с print checkBoxBar.state() выдает нам массив с выбранными значениями в консоли, но как записать его в переменную? Знаю, что вопрос глупый, но просмотрев довольно много туторов по чекбоксам, так и не понял, как использовать их значения в программе в дальнейшем. Использую 2.7.


Добавить комментарий

2 Answers

Python Опубликовано 12.12.2018
0

Все, разобрался. Что-то типа

states = []
for i in range(10):
    var = IntVar()
    chk = Checkbutton(root, text=str(i), variable=var)
    chk.pack(side=LEFT)
    states.append(var)
root.mainloop()
print map((lambda var: var.get()), states)

для значений.

Добавить комментарий
0

Если с минимальными изменениями кода, то так:

def allstates():
     global state
     state = checkBoxBar.state()

Состояние сохранится в глобальную переменную state.

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up