Python tkinter程序的窗口大小
事实上,我认为tkinter窗口已经足够大了。不幸的是,这对我来说不是真的(我使用Lubuntu 16.04) 我的问题: 有人能给我解释一下下面的例子吗?我不明白特金特的行为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
这里有一个例子:
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()