我使用 Python 制作了一个 Tkinter 应用程序。我希望它能够自动调整大小并填充整个窗口,无论我如何调整它的大小。 问题是,当我扩大窗口大小(使用光标)时,边框上会出现灰色空间以填充间隙(参见下图)。
这是去掉不必要细节的代码:
import tkinter as tk
from tkinter import ttk
import openpyxl
root = tk.Tk()
frame = ttk.Frame(root)
frame.pack()
widgets_frame = ttk.LabelFrame(frame, text = "Insert Data")
widgets_frame.grid(row = 0, column = 0, padx = 20, pady = 10)
day_label = ttk.Label(widgets_frame, text = "Date")
day_label.grid(row = 1, column = 0, padx = 5, pady = (0, 5), sticky = "ew")
day_entry = ttk.Entry(widgets_frame)
day_entry.grid(row = 2, column = 0, padx = 5, pady = (0, 5), sticky = "ew")
walking_entry = ttk.Entry(widgets_frame)
walking_entry.insert(0, "Walking duration (min)")
walking_entry.bind("<FocusIn>", lambda e: walking_entry.delete('0', 'end'))
walking_entry.grid(row = 3, column = 0, padx = 5, pady = (0, 5), sticky = "ew")
button = ttk.Button(widgets_frame, text = "Insert")
button.grid(row = 4, column = 0, padx = 5, pady = 5, sticky = "nsew")
treeFrame = ttk.Frame(frame)
treeFrame.grid(row = 0, column = 1, pady = 10)
treeScroll = ttk.Scrollbar(treeFrame)
treeScroll.pack(side = "right", fill = "y")
cols = ("Day", "Walking")
treeview = ttk.Treeview(treeFrame, show = "headings", yscrollcommand = treeScroll.set, columns = cols, height = 13)
treeview.column("Day", width = 100)
treeview.column("Walking", width = 50)
treeview.pack()
treeScroll.config(command = treeview.yview)
root.mainloop()
有人有建议可以帮助我解决这个问题吗? 谢谢。
我添加了这行代码,因为在另一个线程中,他们说这有助于在窗口大小增加时均匀地扩展小部件:
root.grid_columnconfigure(0,weight = 1)
root.grid_columnconfigure(1,weight = 1)
root.grid_rowconfigure(0, weight = 1)
root.grid_rowconfigure(1, weight = 1)
root.grid_rowconfigure(2, weight = 1)
root.grid_rowconfigure(3, weight = 1)
root.grid_rowconfigure(4, weight = 1)
不幸的是,即使这样做了,我也没有注意到任何变化。
您可以使用
expand = True, fill = BOTH
作为所需小部件的属性,以将它们扩展到完整尺寸。