Introduction
Basic Widgets
Toplevel Widgets
Geometry Management
Binding Functions
Working with Images in Tkinter
Tkinter Advance
Applications and Projects
The grid()
method in tkinter
is one of the geometry managers used for placing widgets within a window or frame in a table-like structure. Each widget can be positioned in a specific row and column, making grid()
particularly useful for form-like layouts.
1. Import Required Libraries:
import tkinter as tk
2. Create the Main Application Window:
root = tk.Tk() root.title("Grid Tutorial")
3. Using the grid()
method:
Widgets are positioned using the row
and column
options. Rows and columns are zero-indexed. If you don't specify a row or column, it defaults to the next available.
Let's create a simple form with labels and entry fields using the grid()
method:
# Create a label and an entry field for 'Name' tk.Label(root, text="Name").grid(row=0, column=0, padx=10, pady=10, sticky="w") tk.Entry(root).grid(row=0, column=1, padx=10, pady=10) # Create a label and an entry field for 'Email' tk.Label(root, text="Email").grid(row=1, column=0, padx=10, pady=10, sticky="w") tk.Entry(root).grid(row=1, column=1, padx=10, pady=10) # Create a button tk.Button(root, text="Submit").grid(row=2, column=0, columnspan=2, pady=20)
Note:
padx
and pady
are used to add some padding around the widgets.sticky
option controls the alignment of the widget within the grid cell. It takes values (north, south, east, west) which can be represented as "n", "s", "e", "w" respectively. In this example, sticky="w"
aligns the label to the left (west) of its grid cell.4. Spanning Multiple Rows or Columns:
If you want a widget to span multiple rows or columns, you can use the rowspan
and columnspan
options:
tk.Label(root, text="Description").grid(row=3, column=0, padx=10, pady=10, sticky="w") tk.Text(root, height=4, width=25).grid(row=3, column=1, padx=10, pady=10, rowspan=3)
Here, the Text
widget spans 3 rows.
5. Run the Main Loop:
root.mainloop()
Complete Code:
import tkinter as tk root = tk.Tk() root.title("Grid Tutorial") tk.Label(root, text="Name").grid(row=0, column=0, padx=10, pady=10, sticky="w") tk.Entry(root).grid(row=0, column=1, padx=10, pady=10) tk.Label(root, text="Email").grid(row=1, column=0, padx=10, pady=10, sticky="w") tk.Entry(root).grid(row=1, column=1, padx=10, pady=10) tk.Button(root, text="Submit").grid(row=2, column=0, columnspan=2, pady=20) tk.Label(root, text="Description").grid(row=3, column=0, padx=10, pady=10, sticky="w") tk.Text(root, height=4, width=25).grid(row=3, column=1, padx=10, pady=10, rowspan=3) root.mainloop()
This code will produce a simple form-like interface using the grid()
method. Adjust the positions and widget attributes as needed to fit your specific design.
Python Tkinter grid layout example:
Tkinter provides the grid()
method for organizing widgets in a grid layout.
import tkinter as tk root = tk.Tk() label1 = tk.Label(root, text="Label 1") label2 = tk.Label(root, text="Label 2") label1.grid(row=0, column=0) label2.grid(row=0, column=1) root.mainloop()
How to use grid() in Tkinter:
The grid()
method in Tkinter is used for organizing widgets in a grid layout. It allows you to specify the row and column where a widget should be placed.
import tkinter as tk root = tk.Tk() label1 = tk.Label(root, text="Label 1") label2 = tk.Label(root, text="Label 2") label1.grid(row=0, column=0) label2.grid(row=0, column=1) root.mainloop()
Grid method for widget placement in Tkinter:
Use the grid()
method to place widgets in a grid layout by specifying the row and column coordinates.
import tkinter as tk root = tk.Tk() label1 = tk.Label(root, text="Label 1") label2 = tk.Label(root, text="Label 2") label1.grid(row=0, column=0) label2.grid(row=0, column=1) root.mainloop()
Grid row and column configuration in Tkinter:
import tkinter as tk root = tk.Tk() label1 = tk.Label(root, text="Label 1") label2 = tk.Label(root, text="Label 2") label1.grid(row=0, column=0) label2.grid(row=0, column=1) # Configure row and column weights root.grid_rowconfigure(0, weight=1) root.grid_columnconfigure(0, weight=1) root.grid_columnconfigure(1, weight=1) root.mainloop()
Customizing widget placement with Tkinter grid:
Customize widget placement using the grid()
method and parameters like row
, column
, sticky
, etc., to achieve the desired layout.
import tkinter as tk root = tk.Tk() label1 = tk.Label(root, text="Label 1") label2 = tk.Label(root, text="Label 2") label1.grid(row=0, column=0, padx=10, pady=10, sticky="w") label2.grid(row=1, column=0, padx=10, pady=10, sticky="e") root.mainloop()