Variable size list of Checkboxes in Tkinter? Variable size list of Checkboxes in Tkinter? tkinter tkinter

Variable size list of Checkboxes in Tkinter?


Tkinter supports a relatively unlimited number of checkboxes, limited mostly by practical matters such as system memory and usability constraints.

There are at least three techniques for making a scrollable container for widgets. Both canvases and text widgets support scrolling, so the generally accepted practice is to use one of those for the container. You can also do clever tricks with the place command if you need something complex.

Using the canvas is good if you want to scroll a frame that contains more than just a vertical list of objects. Using the text widget is quite handy if all you need to do is create a single vertical list.

Here's a simple example:

import Tkinter as tkclass Example(tk.Frame):    def __init__(self, root, *args, **kwargs):        tk.Frame.__init__(self, root, *args, **kwargs)        self.root = root        self.vsb = tk.Scrollbar(self, orient="vertical")        self.text = tk.Text(self, width=40, height=20,                             yscrollcommand=self.vsb.set)        self.vsb.config(command=self.text.yview)        self.vsb.pack(side="right", fill="y")        self.text.pack(side="left", fill="both", expand=True)        for i in range(1000):            cb = tk.Checkbutton(self, text="checkbutton #%s" % i)            self.text.window_create("end", window=cb)            self.text.insert("end", "\n") # to force one checkbox per lineif __name__ == "__main__":    root = tk.Tk()    Example(root).pack(side="top", fill="both", expand=True)    root.mainloop()

As you learn more about Tkinter you'll realize that there aren't quite as many built-in widgets as some other toolkits. Hopefully you'll also realize that Tkinter has enough fundamental building blocks to do just about anything you can imagine.