How can I add padding to a tkinter window, without tkinter centering the widget? I tried:
self.canvas_l = Label(self.master, text="choose a color:", font="helvetica 12") self.canvas_l.grid(row=9, column=1, sticky=S, ipady=30) and
self.canvas_l = Label(self.master, text="choose a color:", font="helvetica 12") self.canvas_l.grid(row=9, column=1, rowspan=2, sticky=S, pady=30) I want 30px padding only on the top of the label.
3 Answers
The padding options padx and pady of the grid and pack methods can take a 2-tuple that represent the left/right and top/bottom padding.
Here's an example:
import tkinter as tk class MyApp(): def __init__(self): self.root = tk.Tk() l1 = tk.Label(self.root, text="Hello") l2 = tk.Label(self.root, text="World") l1.grid(row=0, column=0, padx=(100, 10)) l2.grid(row=1, column=0, padx=(10, 100)) app = MyApp() app.root.mainloop() 8There are multiple ways of doing that you can use either place or grid or even the packmethod.
Sample code:
from tkinter import * root = Tk() l = Label(root, text="hello" ) l.pack(padx=6, pady=4) # where padx and pady represent the x and y axis respectively # well you can also use side=LEFT inside the pack method of the label widget. To place a widget to on basis of columns and rows , use the grid method:
but = Button(root, text="hello" ) but.grid(row=0, column=1) 1-pady {10,0} this way you are mentioning padding on top as 10 and below as 0.
In python code, this might look like:
l = Label(root, text="hello" ) l.pack(pady=(10, 0)) 1