-1

嗨,即使有小部件,有没有办法改变小部件的宽度和高度?我有这样的代码

  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() 作为标签,然后更改框架的大小)

4

1 回答 1

1

因为您正在使用place,所以您有两个解决方案:您可以使用 place 将宽度和高度设置为零,或者您可以关闭几何传播。

使用 place 设置宽度和高度

place 允许您定义放置的小部件的宽度和高度,因此在您的click函数中您可以这样做:

def click():
    frame.place_configure(width=0, height=0)

关闭几何传播

通过称为“几何传播”的方式调整框架的大小以适应其内容。如果关闭它,您可以使用框架本身的宽度和高度选项来控制框架的大小。通常最好让 Tkinter 为您决定大小,但有时需要有一个明确的大小,这就是为什么可以关闭几何传播的原因。

由于您grid用于管理框架内部的小部件,因此您需要用于grid_propagate(False)关闭该框架的几何传播:

frame.grid_propagate(False)

通过这样做,您负责设置小部件的初始宽度和高度,尽管您可以保留传播以获取初始大小,然后单击按钮将其关闭以解决该问题。

有一个有趣的错误(或功能......)如果您将宽度和高度设置为零,Tkinter 将不会重绘窗口。至少,它不在 Mac 上。我不记得解决方法,因为我从不需要将小部件设置为零大小,但将其设置为 1x1 像素使其几乎不可见。

于 2013-09-04T17:00:04.903 回答