代码之家  ›  专栏  ›  技术社区  ›  AnonymousPug 55

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

  •  1
  • AnonymousPug 55  · 技术社区  · 8 年前

    我开始使用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中将标签居中,请回答。谢谢

    2 回复  |  直到 8 年前
        1
  •  5
  •   Bryan Oakley    8 年前

    如果将一个小部件放置在另一个小部件的中心, place 是最好的选择。它可以选择相对于另一个小部件定位一个小部件(通常,但不一定是相对于其父部件)。

    在本例中,您希望标签的中心位于其父标签的中心。可以使用的相对X坐标为。5的相对Y坐标。5和 anchor 表示小部件的中心位于给定的坐标处。

    例子:

    nameLabel.place(relx=.5, rely=.5, anchor="center")
    
        2
  •  1
  •   Xantium    8 年前

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

    grid() pack()

    使用 包装() :

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

    默认情况下 top bottom 将小部件与中心对齐。左侧和右侧将分别与左侧和右侧对齐。

    下面是演示此属性的代码摘录:

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

    使用 网格() :

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

    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)
    

    更新: 关于窗口注释中的居中标签,我自己也不知道该怎么做,尽管我发现 this post that seems to do what you want