【问题标题】:Set the same width to an entry and text tkinter label为条目和文本 tkinter 标签设置相同的宽度
【发布时间】:2013-05-20 09:03:51
【问题描述】:

我想将一个条目和一个文本标签放在另一个下方且宽度相同。

这是我的代码:

from tkinter import * 

root = Tk()

title = StringVar()
title_entry = Entry(root, textvariable=title, width=30)
title_entry.pack()


content_text = Text(root, width=30)
content_text.pack()

root.mainloop()

但我的 2 个小部件的宽度不同。有什么办法解决吗?

【问题讨论】:

  • 这不可能是您的实际代码——此代码会产生错误unknown option '-textvariable'。你真的是说你有一个文本小部件,还是第二个小部件是标签小部件?
  • 确实,我犯了一个错误。我纠正了这一点。谢谢。

标签: python python-3.x tkinter


【解决方案1】:

小部件的大小不同可能是因为它们具有不同的默认字体。如果它们具有相同的字体和相同的宽度,它们应该具有相同的自然宽度。但是,实际宽度可能会受到它们在窗口中的放置方式的影响,并且通常有充分的理由为这些小部件使用不同的字体。

在您的情况下,最简单的解决方案是让每个小部件在 x 轴上填充容器。这样可以确保,无论它们的自然宽度如何,它们都会扩展以从边到边填充窗口:

title.pack(fill="x")
content_text.pack(fill="x")

如果这是您仅有的两个小部件,您需要更进一步并指定其他选项以获得正确的调整大小行为:

title.pack(fill="x")
content_text.pack(fill="both", expand=True)

【讨论】:

    【解决方案2】:

    文本和条目小部件的宽度由字符数设置。我认为,文本和条目的默认字体大小可能不同。您可能需要在参数中设置字体大小??

    【讨论】:

    • 是的,小部件有不同的字体。使用相同的字体解决了这个问题,但另一个答案让我不要修改它。
    【解决方案3】:

    您只需向 .pack 属性添加一个参数。把这个放进去:

    .pack (fill=X)
    

    把它放进去,两个小部件都会拉伸你窗口的所有宽度。

    【讨论】:

      猜你喜欢
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      • 2014-10-30
      • 2013-04-28
      • 1970-01-01
      相关资源
      最近更新 更多