Проблема с флажком Tkinter - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь создать графический интерфейс Tkinter, в котором у меня есть флажки для элементов, но я получил только один (последний).

Что я делаю не так?

class Items(Daily):
    def __init__(self):
        super().__init__()
        self.appD=Frame(self.root, padx=20, pady=20)
        self.appD.grid(row=0, column=0)
        self.itemsAl()


    def itemsAl(self):
        items=['item1', 'item2', 'item3']
        variable=IntVar()
        check_boxes={item: IntVar() for item in items}

        label_Lbl=Label(self.appD, text='label', )
        label_Lbl.grid(row=0, column=0, sticky=W)

        for item in items:
            c=Checkbutton(self.appD, text=item, variable=item)
        for x in range(1, 3):
            c.grid(row=x, column=0, sticky=W)

        button_Done=Button(self.appD, text='Done')
        button_Done.grid(row=4, column=0, sticky=W)

        self.root.mainloop()

1 Ответ

1 голос
/ 12 марта 2019

Вы перезаписываете значение c при каждой итерации, поэтому вы сохраняете только последнее значение.Попробуйте сохранить флажки в списке, а затем выполнить итерацию по этому списку.

class Items(Daily):
    def __init__(self):
        super().__init__()
        self.appD=Frame(self.root, padx=20, pady=20)
        self.appD.grid(row=0, column=0)
        self.itemsAl()


    def itemsAl(self):
        items=['item1', 'item2', 'item3']
        variable=IntVar()
        check_boxes={item: IntVar() for item in items}

        label_Lbl=Label(self.appD, text='label', )
        label_Lbl.grid(row=0, column=0, sticky=W)

        cboxes = [
            Checkbutton(self.appD, text=item, variable=item) for item in items
        ]
        for r, c in enumerate(cboxes, 1)
            c.grid(row=r, column=0, sticky=W)

        button_Done=Button(self.appD, text='Done')
        button_Done.grid(row=4, column=0, sticky=W)

        self.root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...