是否可以使tkinter窗口的内容适应屏幕尺寸?就像是否根据1366x768的屏幕分辨率创建了一个窗口,然后在1024x768分辨率的系统上运行相同的代码并动态调整其内容大小一样?我知道我可以在此处使用as described作为网格结构,并相应地设置单元的权重。但是包装几何结构而不是网格有可能吗?我问这个问题是因为我正在从事的项目的一半是由我的同事完成的,而他根本没有使用网格。因此,我正在寻找一种解决方法,而不是在网格中重做所有代码。这是我需要调整大小的示例代码-
def check_variable(jar_path):
with zipfile.ZipFile(jar_path, 'r') as zipf:
ret_reader = csv.reader(zipf)
for row in ret_reader:
if row[0] == 'Variable Label':
return row[1]
raise OutputError('Variable Label not found in file %s!' % ret_file_name)
您会看到所有小部件都使用包几何管理器放置了。
答案 0 :(得分:2)
pack
与grid
可以达到几乎相同的效果。确实,我通常喜欢打包,因为它给了我更多的自由。
例如,以以下示例为例:
from tkinter import Tk, Label, X, Frame, Y, LEFT, BOTH
root = Tk()
# Initialize frames
f1 = Frame(root, bg="grey")
f2 = Frame(root, bg="pink")
# Initialize labels
w1 = Label(f1, text="Red", bg="red", fg="white")
w2 = Label(f1, text="Green", bg="green", fg="white")
w3 = Label(f1, text="Blue", bg="blue", fg="white")
w1b = Label(f2, text="Red", bg="red", fg="white")
w2b = Label(f2, text="Green", bg="green", fg="white")
w3b = Label(f2, text="Blue", bg="blue", fg="white")
# Packing level 1
f1.pack(fill=X)
f2.pack(fill=BOTH, expand=True)
# Packing level 2
w1.pack(fill=X)
w2.pack(fill=X)
w3.pack(fill=X)
w1b.pack(side=LEFT, fill=BOTH, expand=True)
w2b.pack(side=LEFT, fill=BOTH, expand=True)
w3b.pack(side=LEFT, fill=BOTH, expand=True)
root.mainloop()
如您所见,通过以正确的方式使用参数fill
和expand
,我将第二帧设置为可扩展,并带有两侧的窗口(X
和Y
),而第一帧只能在X
中展开。框架内的所有标签也均匀分布。
请参阅文档https://effbot.org/tkinterbook/pack.htm中的pack
的所有选项。