Naruto Uzumaki
Naruto Uzumaki

Reputation: 91

tkinter frame not working properly

Can anyone help me why columnspan not having any effect in this code:

import tkinter as tk

root = tk.Tk()

frametop = tk.Frame(root).grid(row = 0, column = 0, columnspan = 2)
labeltest1 = tk.Label(frametop, text="A").grid(row = 0, column = 0)
labeltest2 = tk.Label(frametop, text="B").grid(row = 0, column = 1)
labeltest3 = tk.Label(frametop, text="C").grid(row = 0, column = 2)

framebottom = tk.Frame(root).grid(row = 1, column = 0)
labeltest4 = tk.Label(framebottom, text="Hello World").grid(row = 1, column = 0)
labeltest5 = tk.Label(framebottom, text="Hello World").grid(row = 1, column = 1)
labeltest6 = tk.Label(framebottom, text="Hello World").grid(row = 1, column = 2)

root.mainloop()

labeltest1, labeltest2, labeltest3 are being distributed in column similar to the widgets of framebottom. What I wanted is a grid of 3 columns inside a frame with a columnspan = 2 with the same row.
Something similar to this:

||   A    |   B   |   C    ||  
| Hello World | Hello World | Hello World |

Upvotes: 0

Views: 595

Answers (1)

Reblochon Masque
Reblochon Masque

Reputation: 36732

The way your code is organized, the Frames have no effect; when you grid on the same line as the widget creation, None gets returned and stored in the variables you are using for the Frames, and Label. A consequence is that the labels are inserted directly into root.

The following does the same, with a placement of the labels per your request.

import tkinter as tk

root = tk.Tk()

tk.Label(root, text="A").grid(row=0, column=0, columnspan=2)
tk.Label(root, text="B").grid(row=0, column=2, columnspan=2)
tk.Label(root, text="C").grid(row=0, column=4, columnspan=2)

tk.Label(root, text="Hello World").grid(row=1, column=0, columnspan=3)
tk.Label(root, text="Hello World").grid(row=1, column=3, columnspan=3)
tk.Label(root, text="Hello World").grid(row=1, column=6, columnspan=3)

root.mainloop()

GUI appearance (osX):

enter image description here

Upvotes: 1

Related Questions