2017-07-19 2 views
2

新しいウィジェットを作成して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は残りのウィジェットに基づいてウィンドウサイズを変更しません。

答えて

1

空の文字列をgeometryメソッドに渡すことによって、ウィンドウのジオメトリをリセットする必要があります。

例:

def func1(): 
    w.geometry("") 
    ... 
関連する問題