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() 
8

There 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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy