为什么添加按钮后调节tk画布大小的关键参数无法正常工作?

时间:2019-06-08 13:11:33

标签: python tkinter tkinter-canvas

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

我在代码末尾测试了height width的值: print(window [“ width”])得到700 print(window [“ height”])得到800

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

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()

1 个答案:

答案 0 :(得分:1)

CanvasFrame将缩小到widget被打包或网格化后所需的大小。但是您可以通过propagate来明确告诉它不要:

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

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

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