2016-12-25 6 views
2

私はのpython3のためのTkinterでは、このようなフレームの上にボタンを配置:要素をTkinterの右下に固定する方法を教えてください。

b2_1 = Button(frame1, text='aaaaaaaaaaaa') 
b2_1.pack(pady=20, side=RIGHT) 

b2_2 = Button(frame1, text='bbbbbbbbbbbbbbb') 
b2_2.pack() 

私は右側に、だけでなく、下にないだけ固執するb2_1及びb2_2ボタン、互いに上下右をしたいです。 どうすればいいですか?

答えて

1

packは、この場合、理想的なジオメトリマネージャではありません。あなたはちょうど子供を次々につけておきたいフレームの中でpackを使います。私はまだ「自然な」使用を見ている場所マネージャーがあります。

この場合、grid managerを使用してください。これはパックより単純ではありませんが、柔軟性があります。グリッドの行数と列数を把握したら、配置は.grid(column=lastcol,row=lastrow)で簡単です。 Terry Jan Reedyは、空の列や行は表示されないので、あまりにも大きな数値を使用することを示唆しましたが、私は賢くて欲しいので、グリッドがどのように正確に見えるか知っています。

+0

私は、グリッドを使用して同意します。 「右下」は最後の列を意味し、最初ではありません;-)空の行と列は表示されないので、「大きすぎる」行と列も機能します。例えば、 '.grid(column = 99、row = 99)'(または上記のボタンの 'row = 98')は通常動作するはずです。 –

2

「右下隅に何かを置くには?文脈から適切に答えられない。それは本当に他に何が入っているかによって決まります。 use placeを使用すると、どこでも簡単にウィジェットを配置できますが、まれに正しい解決策ではありません。あなたが本当にグリッド(例えばで物事をレイアウトしたい場合は

グリッドを理解することは比較的容易である:下部と上部に1つまたはそれ以上のカップルの行の右端の列

パックすることができますたとえば、左右のフレームを作成し、右のフレームの下部にボタンをパックすることができます。

また、使用する可能性もありますたとえば、グリッドを使用してメインウィジェットをヘッダ、メインエリア、およびフッターにレイアウトし、packを使用してフッターのボタンを配置することができます。

文字通り2つのボタンしか必要とせず、右下にスタックしたい場合は、gridを使用することをおすすめします。それらを一番下の行に配置することに加えて、余分なスペースを占める他の少なくとも1つの列と1つの列があることを確認する必要があります。行と列は空でも構いませんが、「重み」を持つように構成する必要があります。例えば

frame1.grid_rowconfigure(0, weight=1) 
frame1.grid_columnconfigure(0, weight=1) 

# give the empty row 0 and column 0 a non-zero weight 
# so that grid gives all extra space to those columns. 

b2_1.grid(row=1, column=1) 
b2_2.grid(row=2, column=1) 
関連する問題