【发布时间】:2016-02-13 02:32:35
【问题描述】:
我正在尝试设置窗口的最小尺寸。
我遵循How do I set a minimum window size in tkinter?上发布的解决方案
但是,这并没有考虑到我拥有的菜单的高度。
我的菜单代码是:
menubar = tk.Menu(self)
menu = tk.Menu(menubar, tearoff=0)
menu.add_command(label="Change user name", \
command=self.prompt_new_name)
menu.add_separator()
menu.add_command(label="Exit", command=self.close_app)
menubar.add_cascade(label="Menu", menu=menu)
self.master.config(menu=menubar)
我设置最小尺寸的方式是:
master = self.master
master.update()
print(master.winfo_height())
print(menubar.winfo_height())
master.minsize(master.winfo_width(), master.winfo_height())
master.winfo_height() 看起来它返回窗口的高度,就好像没有菜单小部件一样。我尝试打印菜单栏的高度,但它返回 1。
如何获取包括菜单在内的窗口高度,或者仅单独获取菜单的高度,以便将其添加到 master.winfo_height() 并将其设置为 minsize?
【问题讨论】:
-
为什么需要窗口和菜单一样高?这似乎是一个非常不寻常的要求。
-
没有菜单那么高。我需要它不小于初始窗口大小,包括菜单和所有其他小部件。现在,因为 master.winfo_height() 不包括菜单的高度,我仍然可以将主窗口变小,并且最底部的小部件被切断。
-
只要您使用
grid和/或pack,窗口总是足够大,可以容纳所有内容。没有理由设置最小尺寸。让 tkinter 为您计算尺寸。我认为您正在尝试解决一个非问题。 -
这对我来说是一个实际的问题。我可以单击窗口的底部边框并向上移动鼠标以使窗口变小。然后底部的小部件被切断。
-
我遇到了同样的问题,窗口最初可能足够大以包含所有内容,但可以将其调整为更小,切断小部件(是的,我认识到通常允许用户拍摄自己在脚下,但我不是那个发号施令的人)。如果我使用
master.minsize(master.winfo_reqwidth(), master.winfo_reqheight() + menu.winfo_reqheight())设置(在强制update/update_idletasks之后)最小尺寸(菜单报告reqheight 为60)它有点工作,但它垫,其中一半不能缩小。
标签: python menu tkinter height size