How To Align Tkinter Widgets?
Solution 1:
You should use the sticky
keyword argument in order to align your widgets better when using grid.
importTkinteras tk
window = tk.Tk()
radio = tk.Radiobutton(window, text="I'm a radio")
radio.grid(column=0, row=0, sticky=tk.N+tk.S+tk.W+tk.E)
window.mainloop()
You can use any combination of the N, S, W and E
members of the Tkinter
module. This parameter will make your widgets stick to the sides of the cell you have specified, somewhat like justification in text. If your widget is resizable, such as with Button
, the widget will also automatically resize to fit the cell if you use all of the N, S, W and E
members.
Important to note is that this can only do so much as to make the widgets stick to the edges of the cell. Sometimes it is necessary to actually resize the cell or move your widget to another cell.
In your example image, you have Button
s with a set size that is larger than the default size (the example code you provide is incomplete). This causes the cell, and the whole columns that the cells of these Button
s are in, to become wider. In this case, you might want to use the columnspan
keyword argument to divide your column into smaller, resizable, parts, so that your Radiobutton
s can be aligned still better.
import Tkinter as tk
window= tk.Tk()
radio_one = tk.Radiobutton(window, text="I'm a radio")
radio_two = tk.Radiobutton(window, text="I'm another radio")
button = tk.Button(window, text="I am a very long button", width=50)
button.grid(row=0, column=0, columnspan=2, sticky=tk.N+tk.S+tk.W+tk.E)
radio_one.grid(column=0, row=1, sticky=tk.N+tk.W)
radio_two.grid(column=1, row=1, sticky=tk.N+tk.W)
window.mainloop()
If you would like more information on what parameters the grid
geometry manager can use, I suggest you read this tutorial, I have found it to be very helpful in the past.
As a sidenote, please note that you use the variable
keyword argument in the declaration of your Radiobutton
s incorrectly. You must pass either a tk.StringVar
, tk.IntVar
or some other comparable object, as described here.
Solution 2:
You can use sticky=W
inside your .grid
for all your buttons to make them align on the left side. And you can also include pady = 20
to make it not go all the way to the left.
Post a Comment for "How To Align Tkinter Widgets?"