【问题标题】:tkinter window not wide enough to display window titletkinter 窗口不够宽,无法显示窗口标题
【发布时间】:2016-02-08 15:51:13
【问题描述】:

是否有一种“标准”方式来确保显示的窗口足够宽以显示窗口标题?

import tkinter as tk
root = tk.Tk()
root_f = tk.Frame(root)
root.title('Long Window Title Containing Much Text')
text_f = tk.Frame(root_f)
text_l = tk.Label(text_f, text='Short text')

root_f.grid()
text_f.grid()
text_l.grid()

root.geometry('+{}+{}'.format(100, 100))
root.mainloop()
root.quit()

当我使用 winfo 方法获取根(或文本)框架的宽度时,它们给出的文本大小不是窗口大小,足以显示整个窗口标题。

我知道它一定很简单,但我看不到。

谢谢

【问题讨论】:

  • 在 MacOS X 上运行 Python 3.4.3 一切都像魅力一样。您是否尝试评论 root.geometry() 行以启用自动窗口缩放?
  • 谢谢艾伯特。有趣的是,在我运行 python 3.4 的 Mac OSX 10.7.5 上,我得到的只是一个非常小的窗口,刚好足以容纳文本“短文本”。奇怪的。不过还是谢谢。
  • 哦,你绝对是对的。没看到那个。我以为您在显示文本 Short Text 时遇到问题。该窗口的标题在我的系统中也不可见。对不起……

标签: python tkinter root title


【解决方案1】:

不,没有标准方法。 Tkinter 无法知道标题在标题栏上的长度。操作系统/窗口管理器完全控制窗口的该部分,并且不公开任何与平台无关的获取该信息的方式。

您不仅需要知道操作系统用于窗口标题的字体,还需要知道标题区域中是否出现了任何其他装饰(例如:按钮、图像等)。

如果您可以假设字体与默认的 tkinter 字体相同,则可以使用 tkinter 的功能,通过字体对象的 measure 方法测量给定字体中字符串的长度。

【讨论】:

  • 谢谢 Bryan,一如既往的智慧字体 :)。对我来说,tkinter 不知道这一点似乎有点奇怪,但正如你从上面看到的那样,我正在寻找一种方法来做到这一点。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
相关资源
最近更新 更多