Tkinter Window Formatting (Python)
calculator, formatting, python, tkinter, widget
Solution
You can use the `columnspan` argument to span the labels and the entries two columns. As a side note, remember that the column index is also zero-based:
label1.grid(row=0, column=0, columnspan=2)
enter1.grid(row=1, column=0, columnspan=2)
label2.grid(row=2, column=0, columnspan=2)
enter2.grid(row=3, column=0, columnspan=2)
btn1.grid(row=4, column=0)
btn2.grid(row=5, column=0)
btn3.grid(row=5, column=1)
btn4.grid(row=4, column=1)
label3.grid(row=6, column=0, columnspan=2)
Another solution is to create a new frame and put the buttons inside it, forming a simple grid of 2 by 2.
Problem
Im making a simple Tkinter calculator but i cant seem to properly line up the input forms and the buttons. here is my current code ``` from Tkinter import * def calculate(): try: num1 = float(enter1.get()) num2 = float(enter2.get()) result = num1 * num2 label3.config(text=str(result)) except ValueError: label3.config(text='Enter numeric values!') def calculate2(): try: num1 = float(enter1.get()) num2 = float(enter2.get()) result = num1 / num2 label3.config(text=str(result)) except ValueError: label3.config(text='Enter numeric values!') def calculate3(): try: num1 = float(enter1.get()) num2 = float(enter2.get()) result = num1 + num2 label3.config(text=str(result)) except ValueError: label3.config(text='Enter numeric values!') def calculate4(): try: num1 = float(enter1.get()) num2 = float(enter2.get()) result = num1 - num2 label3.config(text=str(result)) except ValueError: label3.config(text='Enter numeric values!') root = Tk() label1 = Label(root, text='First Number:') label1.grid(row=0, column=1) enter1 = Entry(root, bg='white') enter1.grid(row=1, column=1) label2 = Label(root, text='Second Number:') label2.grid(row=2, column=1) enter2 = Entry(root, bg='white') enter2.grid(row=3, column=1) btn1 = Button(root, text='X', command=calculate) btn1.grid(row=4, column=1) btn2 = Button(root, text='/', command=calculate2) btn2.grid(row=5, column=1) btn3 = Button(root, text='+', command=calculate3) btn3.grid(row=5, column=2) btn4 = Button(root, text='-', command=calculate4) btn4.grid(row=4, column=2) label3 = Label(root) label3.grid(row=6, column=1) enter1.focus() enter1.bind('<Return>', func=lambda e:enter2.focus_set()) root.mainloop() ``` I would like to line it all up and make it so the plus and minus buttons are under the input forms if anyone could help it would be great thank you