I have a tkinter
application with 1 CheckButton
and 2 ComboBoxes
. However, the CheckButton
does not seem to start on the same line as the ComboBoxes
or vice versa. I have placed them both in column=1
but even that does not seem to fix it.
This is how it looks like:
This is my code:
from tkinter import *
from tkinter import ttk
owner = ['Spain', 'United Kingdom', 'Malaysia']
vehicleid = ['C161', 'C162']
equipment = ['X-tron senistra beamer mode version 5.4433',
'Loadcell compact designer 2000 version 32.44',
'Streamcell highspeed collision extra large version 8.5']
window = Tk()
window.title("Running Python Script") # Create window
window.geometry('550x300') # Geo of the window
##These are the option menus
w = ttk.Combobox(window, values=owner)
w.current(0)
w.grid(row=1, column=1)
w0 = ttk.Combobox(window, values=vehicleid)
w0.current(0)
w0.grid(row=0, column=1)
for i,x in enumerate(equipment):
dd_equipment = Checkbutton(window, text=x, variable=x)
dd_equipment.grid(row=2+i, column=1, sticky=W)
if i == 0 or i == 1:
dd_equipment.toggle()
##The run button
run_list_button =ttk.Button(window, text="Send data of ID's to database!")
run_list_button.grid(column=0, row=5)
##These are the titles
l1 = ttk.Label(window, text='Select Owner', width=15)
l1.grid(row=1, column=0)
l0 = Label(window, text='Select vehicle id:', width = 30)
l0.grid(row=0, column=0)
l0 = Label(window, text='Select equipment:', width = 30)
l0.grid(row=2, column=0)
mainloop()
Tkinter widgets that use grid
geometry manager, will be set by sticky=''
by default, and in this way it will be in the middle of the cell of the column. And the column width will be the width of the widget with greatest width in that column(by default). So if you want to align some widgets, then use stick='w'
or any other side on all the required widgets. Or sticky='news'
to make it fill the cell entirely.
w .grid(row=1, column=1, sticky='w')
w0.grid(row=0, column=1, sticky='w')
However I am not so prolific in the way tkinter manages/arranges widgets, the conclusions above were purely drawn from inference. So if I'm wrong, feel free to correct me.