Grid within a frame? Grid within a frame? tkinter tkinter

Grid within a frame?


Figured out a way to do it finally:

from Tkinter import * root = Tk()f = Frame(root, bg = "orange", width = 500, height = 500)f.pack(side=LEFT, expand = 1)f3 = Frame(f, bg = "red", width = 500)f3.pack(side=LEFT, expand = 1, pady = 50, padx = 50)f2 = Frame(root, bg = "black", height=100, width = 100)f2.pack(side=LEFT, fill = Y)b = Button(f2, text = "test")b.pack()b = Button(f3, text = "1", bg = "red")b.grid(row=1, column=3)b2 = Button(f3, text = "2")b2.grid(row=1, column=4)b3 = Button(f3, text = "2")b3.grid(row=2, column=0)root.mainloop()

Having the grid inside a frame inside a frame is a bit of a hack to get the padding around the grid working but it works so I'm happy.


You can nest Tk widgets arbitrarily deep. Quoth the manual:

The size of any master widget is determined by the size of the “slave widgets” inside. The packer is used to control where slave widgets appear inside the master into which they are packed. You can pack widgets into frames, and frames into other frames, in order to achieve the kind of layout you desire. Additionally, the arrangement is dynamically adjusted to accommodate incremental changes to the configuration, once it is packed.

Indeed, a frame containing a (frame of buttons) and a label is how you must structure the layout you describe.