新しいウィジェットを作成してgrid
を使用してウィンドウに表示するか、つまりgrid_forget
を使用してウィジェットを破棄すると、新しく追加または削除されたウィジェットのサイズに応じて、それぞれのディメンションが拡大または縮小します。 しかし、ウィンドウを含めるサイズをgeometry()
で特定の量に設定すると、上記の操作はウィンドウのサイズに影響しません。Python、Tkinter - ウィンドウのサイズをジオメトリ()で設定すると、そのサイズが要素のサイズとともに変更されなくなります。
手作業でサイズを設定した後で、ウィンドウのサイズを再び反映させるというトリックはありますか(要素のサイズに基づいて)
は、コードのスリップ下記を見てみましょう:
import Tkinter
def func1():
l1.destroy()
w.update()
print w.winfo_width(), "x", w.winfo_height()
def func2():
print w.geometry(str(w.winfo_width()+10)+"x"+str(w.winfo_height()+10))
w=Tkinter.Tk()
l1=Tkinter.Label(w, width=20, borderwidth=2, relief="solid", text=' ')
l2=Tkinter.Label(w, width=20, borderwidth=2, relief="solid", text=' ')
c=Tkinter.Button(w, text="clik", command=func1)
c2=Tkinter.Button(w, text="clik2", command=func2)
l1.grid(row=1, column=0)
l2.grid(row=1, column=1)
c.grid(row=0, column=1)
c2.grid(row=2, column=1)
w.columnconfigure(0, weight=1)
w.columnconfigure(1, weight=1)
w.mainloop()
あなたが最初c
ボタンをクリックした場合l1
ラベルが消えた後w
ウィンドウが縮小します。 c2
ボタンを初めてクリックした場合(新しい値を明示的にgeometry
に割り当てた場合)、サイズは一定になり、ウィジェットのサイズによって変更されなくなります。c1
は残りのウィジェットに基づいてウィンドウサイズを変更しません。