Tkinter表格有多行标签?

时间:2015-11-06 13:35:55

标签: python tkinter

我正在构建一个通用的,数据驱动的Tkinter表单。每行左侧都有一个标签,右侧有一个输入字段。使用简单的测试数据,它可以使用Label作为标签文本 - 但是当所需的标签文本比Label字段长时,它只是截断。

构建表单后,我不需要动态更改标签文本:文本将在构建时知道。但我不知道可能的标签字符串的世界。我希望表单通过将标签包装成多行来纵向扩展来容纳更长的标签文本。这当然应该扩展嵌入标签的行。

Per Create resizable/multiline Tkinter/ttk Labels with word wrap,我认为我应该使用Text小部件进行自动换行,并将其禁用为输入字段。但是我不知道如何将它水平约束(以便进行自动换行),同时将其垂直扩展到精确的大小。

换句话说,处理顺序应该是这样的:

  1. 确定父级的总宽度。
  2. 分配Text字段相对于父级的宽度。 (我想我会使用grid_columnconfigure(weight=),但很乐意接受建议。)
  3. 自动换行文本内容以适合其宽度。
  4. 垂直展开“文本”块以显示所有行。
  5. 将垂直尺寸向外传播到父母。
  6. 这可能有一个直截了当的答案,一旦我更好地理解Tkinter几何管理器的工作原理,特别是Grid,这一点就会变得明显。我已经阅读http://effbot.org/tkinterbook/grid.htmhttp://effbot.org/tkinterbook/pack.htm而没有一个大的“啊哈!”时刻。我很感激能够解决这类问题的参考资料。

    感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

您正在寻找Message widget

  

Message小部件是Label的变体,用于显示多行消息。消息小部件可以包装文本,并调整其宽度以保持给定的宽高比。

如果你想要多种字体之类的花哨东西,你需要转移到Text小部件。如果您只想要更长版本的LabelMessage是一个不错的选择。