【发布时间】:2017-09-05 06:01:25
【问题描述】:
正如标题所说,我想知道如何使我的小部件或我的框架的大小与窗口成比例。
【问题讨论】:
-
这个问题太宽泛了。有很多方法可以使小部件的大小成比例。您应该学习基本的 tkinter 教程,以便了解将小部件添加到窗口的三种基本方法:
pack、grid和place。所有人都可以选择做你想做的事。
正如标题所说,我想知道如何使我的小部件或我的框架的大小与窗口成比例。
【问题讨论】:
pack、grid 和 place。所有人都可以选择做你想做的事。
您可以使用grid 几何管理器,同时通过frame.grid_rowconfigure 和frame.grid_columnconfigure 方法为您的行和列赋予非零权重。
感谢 Brian Oakley 的 this answer。
【讨论】:
如果您说的是随着窗口大小的增加,我有两种方法可以做到这一点。请从以下示例中选择适合您要求的一种:
1) 当您更改主窗口的大小时,此方法会更改框架的尺寸。请注意,fill=BOTH 和 expand=True 参数仅与 pack 方法一起使用。您可以使用padx 和pady 使小部件小于主窗口,但请记住,其他小部件将与您的小部件保持相同的距离。
请注意,padx 和 pady 仅适用于 pack 和 grid 方法。
from tkinter import *
root = Tk()
myframe = Frame(root)
myframe.pack(fill=BOTH, expand=True)
root.mainloop()
2) 使用此方法,您可以根据需要更改小部件的尺寸。您可以使小部件的宽度与主窗口的宽度或高度成比例,或两者兼而有之。如果您希望随窗口的尺寸一起更改小部件的尺寸,您也可以做一些简单的加/减,除了小部件的尺寸将小于主窗口。您可以将padx 和pady 作为参数传递以使小部件小于窗口,但请记住,其他小部件将与您的小部件保持相同的距离。
请注意,padx 和 pady仅与 pack 和 grid 方法一起使用。
from tkinter import *
root = Tk()
myframe = Frame(root)
myframe.pack() #in this technique, you can use any method (pack/place/grid).
#because it's not important which method you use to put your
#widgets into the window if you use this technique.
root.update()
myframe.config(width=root.winfo_width()) #doing this will keep the width of your frame
#proportional to the width of the main window.
#you can do the same with the height.
【讨论】: