python - 除非其宽度与父级的宽度匹配,否则标签不会在左侧对齐

标签 python tkinter

这是我在这个简单的 GUI 中使用的代码:

def main():

    DOCROOT_LABEL = 'Document root:'
    PORT_LABEL = 'Listen on port:'
    APPNAME = 'PIPlayD'
    TEXT_HEIGHT = 1
    MF_WIDTH = 400
    MF_HEIGHT = 150

    # Loading main window
    win = Tkinter.Tk(baseName = APPNAME)
    win.wm_title(APPNAME)

    # Setting main frame
    f = Tkinter.Frame(win, width = MF_WIDTH, height = MF_HEIGHT)
    f.pack_propagate(False)


    # Setting labels
    label_DocRoot = Tkinter.Label(f,
                                  width = len(DOCROOT_LABEL),
                                  anchor = Tkinter.W,
                                  justify = Tkinter.LEFT,
                                  text = DOCROOT_LABEL)

    label_Port = Tkinter.Label(f,
                               width = len(PORT_LABEL),
                               anchor = Tkinter.W,
                               justify = Tkinter.LEFT,
                               text = PORT_LABEL)

    # Setting text areas
    text_DR = Tkinter.Text(f, height = TEXT_HEIGHT)

    text_P = Tkinter.Text(f, height = TEXT_HEIGHT)

    f.pack()
    label_DocRoot.pack()
    text_DR.pack()
    label_Port.pack()
    text_P.pack()

    win.mainloop()

我已经将它设置为将字符串的长度作为它的宽度,我已经将它的 anchor 属性设置为 W 并将其对齐到左侧(尽管据我所知,不需要对齐,因为它控制发生回车时如何对齐)。

现在,我注意到如果我将 len(DOCROOT_LABEL 更改为 MF_WIDTH,以匹配框架宽度,它会正确对齐。

那么,如何在框架内对齐宽度与父级宽度不匹配的小部件?

最佳答案

如果我对你的问题的理解正确,你想将标签放在框架的左侧。您的方法的问题是您只是将标签对齐,而不是标签本身,标签本身比框架小得多——这很容易通过设置它们的背景来实现 颜色不同。

您可以使用 fill 参数修复此问题:label_DocRoot.pack(fill="x")。但是,我建议使用不同的布局管理器,例如越灵活grid方法。

f.grid()
label_DocRoot.grid(row=1, column=1, sticky=Tkinter.W)
text_DR.grid(row=2, column=1, sticky=Tkinter.W)
label_Port.grid(row=3, column=1, sticky=Tkinter.W)
text_P.grid(row=4, column=1, sticky=Tkinter.W)

通过更改 rowcolumn 的值,您还可以将标签放在同一行并放在文本字段的左侧,这样看起来会更好。

另请注意,您应该使用 Entry 而不是 Text单行文本的小部件。

关于python - 除非其宽度与父级的宽度匹配,否则标签不会在左侧对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344657/

相关文章:

python - 如何管理部署中的库

python - 使用文本小部件时的 Tkinter 问题

python - Tkinter 中消息小部件的滚动条

python - 使用 Tkinter 按钮了解 Python Lambda 行为

python - 按位置删除文本 tkinter

python - 将 numpy 3 维矩阵切片为 2 维矩阵

python - Apache + mod_wsgi - 来自同一浏览器的并行请求

python - Celery如何公平地分配用户的任务?

python - 在Python中循环写入命令以分别从列表中输出许多不同的索引

python - Trackbar HSV OpenCv Tkinter Python