Tkinter,enclosing_frame.grid_propogate(0)以防止调整大小也会阻止更新标签文本

时间:2014-09-11 17:12:12

标签: python tkinter resize

这很简单。

我的应用底部有一个标签。当用户滚动浏览树视图时,该标签的内容会发生变化。有时,内容多行

以前,标签会增长/缩小以适应内容。我不喜欢这个,所以我将标签包裹在一个框架中,将所述框架固定在一个固定的高度,然后设置grid_propagate(0)。它看起来很棒,但现在我的文字已经消失了。

如何为标签指定固定尺寸并保留更新文字的能力?

2 个答案:

答案 0 :(得分:1)

您可以为标签指定固定width

lbl1 = Label(root, text = "Stuff....", width = 10)
lbl1.configure(text = "Another longer stuff....")

如果您给它一个固定的width值,它就不会自动展开。

更新

这是我尝试过的工作。

from tkinter import *
root = Tk()
canv = Canvas(root,height=17)
canv.grid_propagate(0)
lbl1 = Label(canv,text="First line\nSecond Line")
lbl1.grid(column=0,row=0)
canv.grid(column=0,row=0)
root.mainloop()

我将标签包裹在画布而不是画框中并且它有效(仅显示文字"第一行"出现)。使用画布的height值。

答案 1 :(得分:0)

而不是Label在框架内使用文本并添加带文本的垂直滚动条。使用在线示例打包框架中的文本和滚动条,然后将它们连接起来。一旦取消了Frame的传播,它就不会调整大小。然后,您可以将Frame设置为您想要的任何大小,甚至在取消Frame的传播之前将Text设置为特定数量的行和文本列,然后您可以在底部显示尽可能多的文本,允许用户如果太大则滚动浏览。