仅在一侧向 tkinter 小部件添加填充

如何向 tkinter 窗口添加填充,而不使 tkinter 以小部件为中心? 我试过:

 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)

还有

 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)

我希望30像素的填充只在标签的顶部。

185652 次浏览

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

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