为什么证明和锚不适用于Label of Python Tkinter

时间:2018-02-26 07:44:47

标签: python python-3.x user-interface tkinter label

我正在使用以下代码并尝试将文本置于标签上:

from tkinter import * 
root = Tk()
llist = ["first:","second label:","a really long label:","fourth:","fifth:"]
nrow = 0
for i in range(len(llist)):
    # Label(root, text=llist[i], justify='right').grid(row=nrow, column=0) # does not work
    # Label(root, text=llist[i], justify=RIGHT).grid(row=nrow, column=0) # does not work
    # Label(root, text=llist[i], anchor=E).grid(row=nrow, column=0) # does not work
    # Label(root, text=llist[i], anchor=E, justify=RIGHT).grid(row=nrow, column=0) # does not work
    Label(root, text=llist[i]).grid(row=nrow, column=0, sticky=E) # WORKS; 
    Entry(root).grid(row=nrow, column=1)
    nrow += 1
root.mainloop()

文字保留在center中,我提到的选项不适用于上述代码:

enter image description here

只有sticky中的grid()选项才能正常运行:

enter image description here

为什么justify的{​​{1}}和anchor选项在上面的代码中不起作用,即使它们在http://effbot.org/tkinterbook/label.htm等多个地方被提及过?如何使用Labeljustify来对齐标签中的文字?

1 个答案:

答案 0 :(得分:1)

这是因为您尚未为width设置Label,如果您未设置Label,则Label将符合其内容。简而言之,anchor中的文字与Label选项一起使用,但center的长度与文字的长度相同。位于text的内容不是Label,而是Label(root, text=llist[i], anchor="e", width=20).grid(row=nrow, column=0)

如果您为其手动设置宽度:

Label

它会起作用,但很难手动指定grid的长度,因此使用sticky' .wrapper-dropdown选项要好得多。