2016-04-28 8 views
0

Python3/tkinterには、ttk.frameのサイズをその親ウィンドウのサイズに相対的に設定して、ウィンドウのサイズ変更(すべてのウィジェットで)が適切に調整されるようにする簡単な方法がありますか?コンテキストのビットとしてPython3/tkinterで親ウィンドウのサイズに相対的なフレームのサイズを設定する方法は?

、私はrootウィンドウの幅よりも小さいpack()ttk.frame数ピクセルにしようとしています。あなたが希望するサイズを知っているし、それを持っている場合は

+1

は、この質問に対する単一の答えはありません。親に対して相対的な大きさのフレームを作ることは、多くの方法で達成することができます。フレームの内容、親フレームの内容、パック、グリッドまたは場所の使用方法、余分なスペースの処理方法などによって異なります。この質問は、あまりにも広すぎます。 –

+0

彼はパックの使用を具体化しますが – Mixone

答えて

1

あなたが実行します。

root = # Your root window 
myFrame = ttk.Frame(root, height=desiredHeight, width=desiredWidth) 
myFrame.pack() 

ですから、それは相対的なルートにしたい場合:

root = # Your root window 
rootHeight = root.winfo_height() 
rootWidth = root.winfo_width() 
# Say you want it to be 20 pixels smaller 
myFrame = ttk.Frame(root, height=rootHeight-20, width=rootWidth-20) 
myFrame.pack() 
# OR 
myFrame = ttk.Frame(root) # No set dimensions 
myFrame.pack(padx=20, pady=20) 
# This will make it have a padding of 20 pixels on height and width, 
# with respect to parent rather than itself 
+0

結局、プレティシンプルに見えます。 'pack()'の代わりに 'place()'を使用していた場合は、親(親コードの2行目のように)を相対にすることもできますか? –

+0

私はちょっと試しましたが、 'place()'を使って同様の効果を得ることができます(この場合、別のオブジェクトに対する相対位置で新しいフレームを再生しています): 'FRAME.place(in_ = OTHER_OBJECT 、relx = .95、y = 0、anchor = "se"、relwidth = .9) '。このようにして、フレームの裂け目はウィンドウ幅の90%を持ち、左右両側に5%の水平スペースで配置されます。 –

+0

これは良い考えですが、注意してください。 'place'ジオメトリマネージャーはもっと単純化されていますが、これは具体的には良いアイデアですが、通常はそれを避けるのがベストです – Mixone

関連する問題