为什么调节 TK 画布大小的关键参数在添加按钮后不起作用?



我试图构建一个足够大的窗口,其中包含一些小部件。因此,我传递了一些关键参数来调节画布的大小,它按预期工作。但是,当我在画布中添加一个按钮时,窗口恢复到原来的小尺寸(可能是默认大小)。

我在代码末尾测试了高度宽度的值: 打印(窗口["宽度"]) 给出 700 打印(窗口["高度"]) 给出 800

这进一步让我感到困惑,因为如果宽度和高度属性具有我输入的值,为什么添加按钮会阻止窗口演示这些属性?

import tkinter as tk
root=tk.Tk()
window=tk.Canvas(root,width=700,height=800) 
window.pack()
button=tk.Button(window,text="test button") #(1)
button.pack()#(2)
# the Canvas shows the wanted size when (1) and (2)is deleted
root.mainloop()

widget被打包或网格化时,CanvasFrame将缩小到所需的大小。但是你可以传递propagate来明确告诉它不要:

window=tk.Canvas(root,width=700,height=800)
window.pack()
window.propagate(0)

或者,您可以在Button小部件上使用place方法:

button.place(relx=0.5,rely=0.5)

最新更新