Tkinter固定列宽无效

1 投票
1 回答
737 浏览
提问于 2025-04-18 01:55

我正在尝试制作一个简单的程序,想要把文本对齐到左边或者右边。例如:

|Test                      |
|                      Test|

我的想法是创建一个文本标签,把右对齐的文本放在第一列,把左对齐的文本放在第零列。

from tkinter import *

labels = []
i = 0

window = Tk()
window.geometry('300x500')

def newlabel(t,align):
    global i
    label = Label(window,text=t)
    label.grid(row=i,column=align)
    label.columnconfigure(0,minsize=150)
    label.columnconfigure(1,minsize=150)
    labels.append(label)
    i += 1

newlabel('Test',0)
newlabel('Test',1)

window.mainloop()

但是,右边的“测试”没有正确放置:它紧挨着第一个“测试”。

我该如何修改代码才能把它完全放到右边呢?

谢谢

1 个回答

0

主要问题是你在错误的对象上调用了 columnconfigure。你应该在包含这个列的控件上调用它,而不是在列里面的控件上。在你的例子中,你应该使用 window.columnconfigure(...)

你可能还想给这些列设置权重(同样使用 columnconfigure 方法,设置 weight 属性为一个正整数),这样它们就可以根据窗口的大小来伸缩。如果你这样做了,还需要在把它们添加到列的时候设置 sticky 属性,这样它们就能填满自己的列。

撰写回答