Панель прокрутки tkinter checkbutton

#tkinter #canvas #toplevel #tkinter.checkbutton

#tkinter #холст #верхний уровень #tkinter.checkbutton

Вопрос:

Я хочу отобразить checkbutton с полосой прокрутки. ДЕМОНСТРАЦИЯ

Я бы хотел, чтобы обе кнопки всегда были видны (чтобы полоса прокрутки была только на кнопке checkbutton)

Вот мой код:

 def selectColumns(self, data):
        new_window = Toplevel(self.master, height=400, width=200)
        select = Button(new_window, text="select all", command=lambda: self.selection_all(list_var))
        select.pack()
        
        canvas = Canvas(new_window, bg='#FFFFFF', width=300, height=300, scrollregion=(0, 0, 500, 500))
        canvas.pack(side=LEFT)
        
        vbar = Scrollbar(new_window, orient=VERTICAL)
        vbar.config(command=canvas.yview)
        vbar.pack(side=RIGHT)
        
        frame = Frame(new_window, borderwidth=3, relief="sunken", bg="red", height=300, width=200)
        canvas.create_window(0, 0, anchor=NW, window=frame)
        
        i = 1
        list_var = []
        for col in data.columns:
            var = BooleanVar()
            # var.set(True)
            list_var.append((var, col))
            check = Checkbutton(frame, text=col, variable=var).pack()
            i  = 1
        valid = Button(new_window, text="Valid", command=lambda: self.getValue(list_var, data=data, win=new_window))
        valid.pack()
  

обнаруженная проблема:

  • Моя кнопка проверки торчит из моего холста
  • Моя действительная кнопка не выровнена, как сделать с pack (), чтобы canva находилась слева, полоса прокрутки справа, а моя действительная кнопка внизу по центру?

Комментарии:

1. Поскольку ваши флажки расположены вертикально, было бы проще использовать текстовый виджет, а не холст. Вы заинтересованы в том, чтобы увидеть это решение?