在多个代码中多次发生这个问题,而我没有找到修复它的方法。第0列第0行的小部件正在增长,其放置方式与其他小部件不同。当我抓住窗口的末端以扩展它并使其增长时,它与其他小部件之间的间隙会增加。
我已经为您提供了一张图片,看看会发生什么:
这是显示问题的代码:
from tkinter import *
from tkinter import ttk
root=Tk()
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
#Grows the items in the gui
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(1, weight=1)
root.grid_rowconfigure(1, weight=1)
ttk.Label(mainframe, text="Dice 1:").grid(column=0, row=0, sticky=(W, E))
ttk.Label(mainframe, text="Dice 2:").grid(column=0, row=1, sticky=(W, E))
ttk.Label(mainframe, text="Total:").grid(column=0, row=2, sticky=(W, E))
root.mainloop()
问题似乎来自这个声明:
mainframe.grid(column=1, row=1, sticky=(N, W, E, S))
或来自此声明
root.grid_rowconfigure(0, weight=1)
答案 0 :(得分:1)
第一个窗口小部件的行为有所不同,因为您以不同方式配置了第一行mainframe
。如果您希望所有行的行为方式相同,则以相同的方式配置它们。删除此
mainframe.rowconfigure(0, weight=1)
或添加此
mainframe.rowconfigure(1, weight=1)
mainframe.rowconfigure(2, weight=1)
答案 1 :(得分:1)
最简单的解决方案是删除weight
中第0行(零)的mainframe
属性,然后将权重赋给第3行。原因是,您不需要任何额外的垂直空间被分配给标签,而正weight
属性会将一些额外空间赋予该行或列。
通过在标签后为空行提供正权重,所有空的垂直空间将显示在标签下方。
mainframe = Frame(root, background="pink")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(3, weight=1)
很难说这是否是您问题的实际正确解决方案,因为这取决于您希望mainframe
本身的行为方式。它应该缩小以适应标签吗?它应该成长为适合主窗口吗?