Search code examples
pythontkinterpadding

Adding padding to a tkinter widget only on one side


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.


Solution

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