如何使用 Python 3 在 Tkinter 中将标签居中?

How do I center a label in Tkinter using Python 3?

我开始使用 tkinter 创建一个简单的游戏并遇到了问题。我在互联网上搜索但找不到答案。我的问题是我不知道如何在 tkinter 中将标签居中。这是我的代码:

from tkinter import * #Imports TK Interface
import time #Imports Time Module
welcome = Tk() #Opens the Welcome window
welcome.title("Start Up") #Names the Wqelcome window 'StartUp'
welcome.config(bg = "gray") #Changes the Welcome windows background color to beige
nameLabel = Label(welcome, text="Welcome", bg="gray", fg="white")#Creates the welcome label

如果你知道如何在 tkinter 中居中标签,请回答。谢谢!

Tkinter 有两个显示小部件的选项

grid()pack()

使用pack():

在这种情况下,这可能是最佳选择 - 因为您只处理 1 个小部件:

默认情况下 topbottom 会将小部件居中对齐。左对齐和右对齐将分别向左对齐和向右对齐。

这里是您的代码的摘录,演示了这一点 属性:

nameLabel = Label(welcome, text="Welcome", bg="gray", fg="white") 
nameLabel.pack(side="top")

您也可以在底部居中对齐文本:

nameLabel = Label(welcome, text="Welcome", bg="gray", fg="white")
nameLabel.pack(side="bottom")

使用grid():

有时可能需要对齐多个小部件。您可以使用 grid():

单独准确地定位它们
nameLabel1 = Label(welcome, text="Welcome", bg="gray", fg="white")
nameLabel1.grid(column=0, row = 1)
nameLabel2 = Label(welcome, text="Welcome", bg="gray", fg="white") 
nameLable2.grid(column=1, row = 1)
nameLabel3 = Label(welcome, text="Welcome", bg="gray", fg="white")
nameLabel3.grid(column=2, row = 1)

更新: 关于你在 window 评论中的居中标签,我自己不知道该怎么做,尽管我找到了

在将单个小部件放置在另一个小部件的中心的情况下,place 是最佳选择。它具有相对于另一个小部件(通常但不一定相对于其父级)定位小部件的选项。

在您的情况下,您希望标签的中心位于其父标签的中心。您可以使用 .5 的相对 X 坐标、0.5 的相对 Y 坐标和 "center" 的 anchor,这意味着小部件的中心位于给定坐标处。

示例:

nameLabel.place(relx=.5, rely=.5, anchor="center")