Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter。如何获得菜单的高度_Python_Menu_Tkinter_Height_Size - Fatal编程技术网

Python tkinter。如何获得菜单的高度

Python tkinter。如何获得菜单的高度,python,menu,tkinter,height,size,Python,Menu,Tkinter,Height,Size,我正在尝试设置窗口的最小大小 我遵循了张贴在网站上的解决方案 然而,这并没有考虑到我菜单的高度 我的菜单代码是: 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(lab

我正在尝试设置窗口的最小大小

我遵循了张贴在网站上的解决方案

然而,这并没有考虑到我菜单的高度

我的菜单代码是:

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())
winfo_height()看起来像是返回窗口的高度,就好像没有菜单小部件一样。我尝试打印菜单栏的高度,但它返回1

如何获取包含菜单的窗口高度,或仅单独获取菜单高度,以便将其添加到master.winfo_height()中并将其设置为minsize?

请阅读
winfo_height()
winfo_width()
的说明。 正如上面所说:

w、 winfo_高度()

[…]请参见上文
.winfo_geometry()
下有关几何体更新的备注。您可能更喜欢使用下面介绍的
.winfo_reqheight()
,它总是最新的

w、 winfo_reqheight()

这些方法返回小部件w的请求高度。这是使w的所有内容物具有所需空间所需的最小高度。由于与几何图形管理器协商,实际高度可能会有所不同


另外,请看一看。

为什么您需要窗口与菜单一样高?这似乎是一个非常不寻常的要求。没有菜单那么高。我需要它不小于初始窗口大小,包括菜单和所有其他小部件。现在,由于master.winfo_height()不包括菜单的高度,我仍然可以将主窗口缩小,并且最底部的小部件被切断。只要使用
网格
和/或
,窗口将始终足够大,可以容纳所有内容。没有理由设置最小尺寸。让tkinter帮你算出尺寸。我认为你在试图解决一个非问题。这对我来说是一个实际问题。我可以单击窗口的底部边框并向上移动鼠标,使窗口变小。然后底部的小部件被切断。我也遇到了同样的问题,窗口最初可能足够大,可以容纳所有内容,但它可以调整得更小,从而切断小部件(是的,我知道通常允许用户向自己的脚开枪,但我不是发号施令的人)。如果我使用
master.minsize(master.winfo\u reqwidth(),master.winfo\u reqheight()+menu.winfo\u reqheight())设置minsize(在强制更新
/
update\u idletasks
之后),它可以正常工作,但它可以填充,其中一半不能缩小。