嗨有没有办法改变小部件的宽度和高度,即使有小部件? 我有这样的代码
form = Tk()
form.geometry("500x500")
def click():
global frame
frame.config(height = 0 ,width = 0)
frame = LabelFrame(form , text = "vaaja")
frame.place(x = 20 , y = 30)
Label(frame, text ="1").grid(row = 0,column = 0 )
Label(frame, text = "2").grid(row = 1 ,column = 0 )
Button(form , text="Click", command = click).place(x = 200 , y = 200)
form.mainloop()
当我单击按钮时,框架的大小是相同的(我不能使用grid_forget()作为标签,然后更改框架的大小)
答案 0 :(得分:1)
因为您使用的是place
,所以您有两种解决方案:您可以使用地点将宽度和高度设置为零,或者可以关闭几何体传播。
使用地点设置宽度和高度
place允许您定义放置小部件的宽度和高度,因此在click
函数中,您可以执行此操作:
def click():
frame.place_configure(width=0, height=0)
关闭几何体传播
调整框架的大小以适应其内容,称为“几何体传播”。如果将其关闭,则可以使用框架本身的宽度和高度选项控制框架的大小。通常最好让Tkinter为您决定尺寸,但有时需要有明确的尺寸,这就是为什么可以关闭几何传播的原因。
由于您使用grid
来管理框架内部的小部件,因此您需要使用grid_propagate(False)
关闭该框架的几何体传播:
frame.grid_propagate(False)
通过这样做,您负责设置窗口小部件的初始宽度和高度,尽管您可以保持传播以获得初始大小,然后通过单击按钮将其关闭以解决该问题。
有一个有趣的错误(或功能......),如果你将宽度和高度设置为零,Tkinter将不会重绘窗口。至少,它不在Mac上。我不记得这方面的解决方法,因为我从来不需要将小部件设置为零大小,但将其设置为1x1像素使其几乎不可见。