Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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_User Interface_Ubuntu_Tkinter - Fatal编程技术网

Python tkinter程序的窗口大小

Python tkinter程序的窗口大小,python,user-interface,ubuntu,tkinter,Python,User Interface,Ubuntu,Tkinter,事实上,我认为tkinter窗口已经足够大了。不幸的是,这对我来说不是真的(我使用Lubuntu 16.04) 我的问题: 有人能给我解释一下下面的例子吗?我不明白特金特的行为 这里有一个例子: import tkinter as tk root = tk.Tk() menubar = tk.Menu(root) file_menu = tk.Menu(menubar) menubar.add_cascade(label="This is a very long string beca

事实上,我认为tkinter窗口已经足够大了。不幸的是,这对我来说不是真的(我使用Lubuntu 16.04)

我的问题: 有人能给我解释一下下面的例子吗?我不明白特金特的行为


这里有一个例子:

import tkinter as tk

root = tk.Tk()

menubar = tk.Menu(root)

file_menu = tk.Menu(menubar)

menubar.add_cascade(label="This is a very long string because it's just a test . . . ", menu=file_menu)
file_menu.add_command(label="New", accelerator="Ctrl+N")

root.config(menu=menubar)
root.mainloop()
截图: 窗户不够大。为什么?


另一个示例(带容器框架):

截图:非常非常小!你真的看不见。但为什么会这样呢


Tk中的窗口大小是窗口几何管理器的一个功能。对于顶级窗口,几何体管理器为“wm”,这意味着它由平台窗口管理器管理。这会向应用程序窗口询问大小或设置默认值。菜单小部件不提供大小,因此不会影响几何体计算。因此,您得到了一个默认的顶级大小,因为您没有内部管理的小部件


在第二种情况下,您创建了一个没有尺寸标注的框架,默认高度和宽度为0。您可以对其进行打包,从而将顶级wdget设置为对其从属对象使用打包几何体管理器。这会询问从属帧(您的帧)需要多少空间,并将主帧(顶层)设置为合适的大小以容纳它们。这是0。如果设置了框架的宽度和高度,顶层将展开以包含该框架。

所以问题在于菜单栏与窗口大小无关?是的。该菜单与顶层关联。它不是“内部”。Tk文档提到了这个()在窗口上指出菜单是装饰的一部分,由窗口框架管理。在X11上有点不同,但是
winfo_manager
将告诉您管理每个小部件的内容。
import tkinter as tk

root = tk.Tk()

container = tk.Frame(root).pack()

menubar = tk.Menu(container)

file_menu = tk.Menu(menubar)

menubar.add_cascade(label="This is a very long string because it's just a test . . . ", menu=file_menu)
file_menu.add_command(label="New", accelerator="Ctrl+N")

root.config(menu=menubar)
root.mainloop()