1
votes

I am learning Python GUI programming with tkinter. I wanted to place a frame in my root window using the grid geometry manager, specify a height, and have the frame expand to the full width of the root window. I tried to do this using the sticky options but this does not produce the desired result. How do I make the frame expand to the full width of the window without manually specifying the width?

Code:

import tkinter
import tkinter.ttk

win = tkinter.Tk()
win.geometry('600x600')

frame = tkinter.Frame(win, height=300)
frame.configure(bg='red')
frame.grid(column=0, sticky=tkinter.E + tkinter.W)

win.mainloop()

enter image description here

1
@stovfl tried that along with other potential solutions. Nothing that I did seemed to have the intended effect. Either I did so incorrectly, or that answer does not produce the correct result. If that is a known answer, then please provide a code sample and I will mark as answer. - Bill

1 Answers

3
votes

I believe this code will achieve the result you are looking for (note that call to grid_columnconfigure is on win, which is the parent of your frame widget):

import tkinter
import tkinter.ttk

win = tkinter.Tk()
win.geometry('600x600')

frame = tkinter.Frame(win, bg='red', height=300)
frame.grid(row=0, column=0, sticky='ew')
win.grid_columnconfigure(0,weight=1)

win.mainloop()