Naeの答えは正しいが、試してみるとうまくいかなかった。その理由は、
frame1 = Frame(root, bg = 'blue').grid(row = 0, column =0,sticky = W)
がNone .grid()の戻り値に名前frame1
を結合することです。あなたはこの行を実行する場合:
Label(frame1, text = 'Left').grid(row = 0, column =0,sticky = W)
をあなたは、その親はなしではなく、フレームではありませんので、ラベルにトップレベルのウィンドウを作り、実際には、あります。 columnconfigureの説明については詳しく説明し
from tkinter import *
root = Tk()
frame1 = Frame(root, bg = 'blue')
frame1.grid(row = 0, column =0, sticky = W)
Label(frame1, text = 'Left').grid(row = 0, column = 0)
frame2 = Frame(root, bg = 'green')
frame2.grid(row = 0, column = 1,sticky = E)
Label(frame2, text = 'Right').grid(row = 0, column = 0)
root.columnconfigure(0, weight=1)
root.columnconfigure(1, weight=1)
root.mainloop()
:
これは私のために(Windowsの10のpython3.6を)働いデフォルトでは、tkが「それはdoesnの場合でも、可能な最小のスペースにグリッドを絞りますウィンドウを埋める。したがって、2つのラベルは左に絞られてしまいます。 2番目のものはsticky = Eを持っていますが、レイアウトに余分なスペースがないので、スティッキーな設定の効果は見えません。これを無効にするには、1つ以上の列にゼロ以外の重みを代入します。これは、相対的な列の重みに基づいて未使用の領域を割り当てることによって、ウィンドウがいっぱいになるまでグリッドを展開するようにtkに指示します。
達成しようとしていることを示す画像を描くことはできますか? – duhaime
[Paul Cornelius 'answer](https://stackoverflow.com/a/46985899/7032856)は、フレームウィジェットのオブジェクトではなく、 'frame1'と' frame2'が 'None'に割り当てられていることを指摘しています戻り値のないメソッドの結果、 – Nae