0
私は小さなutiltyに取り組んでいます。 私はtk packシステムに問題があり、システム全体をtkinterグリッドパッカーに変更しました。しかし、私はどこでも簡単にウィジェットを配置することはできません。スティッキー値は予期しない方法で適用または適用されません。または私は何か間違っている。Tkinterグリッドパッカーの "Sticky"の不定な振る舞い
以下のコードで何が問題になっていますか?
import tkinter as tk
root = tk.Tk()
var = tk.IntVar()
root.minsize(width=400, height=400)
root.resizable(width=True, height=True)
root.grid_propagate(0)
frame = tk.Frame(root,width=400, height=400, bg="cyan")
frame.grid()
frame.grid_propagate(0)
frame.grid_columnconfigure(0, weight=1)
frame.grid_columnconfigure(1, weight=1)
frame1 = tk.Frame(frame,width=200, height=100, bg="green")
frame2 = tk.Frame(frame,width=200, height=100, bg="blue")
frame3 = tk.Frame(frame,width=200, height=100, bg="yellow")
frame4 = tk.Frame(frame,width=200, height=100, bg="grey")
frame1.grid_propagate(0)
frame2.grid_propagate(0)
frame3.grid_propagate(0)
frame4.grid_propagate(0)
tk.Radiobutton(frame1 ,text="TEXT" ,variable=var ,value=1,indicatoron=0
,width=16 , height=1).grid(sticky=tk.N+tk.E+tk.W)
tk.Radiobutton(frame2 ,text="TEXT" ,variable=var ,value=2,indicatoron=0
,width=16 , height=1).grid(sticky=tk.N+tk.E+tk.W)
tk.Radiobutton(frame3 ,text="TEXT" ,variable=var ,value=3,indicatoron=0
,width=16 , height=1).grid(sticky=tk.N+tk.E+tk.W)
tk.Radiobutton(frame4 ,text="TEXT" ,variable=var ,value=4,indicatoron=0
,width=16 , height=1).grid(sticky=tk.N+tk.E+tk.W)
frame1.grid(row=0,column=0)
frame2.grid(row=0,column=1)
frame3.grid(row=1,column=0)
frame4.grid(row=1,column=1)
root.mainloop()
私は、これらのボタン/ラジオボタンは、彼らは私が
grid(sticky=tk.N+tk.E+tk.W) .
を使用する。しかし、それは動作しない原因に入れたフレームの限界まで伸ばす期待しています。
しかし、どのような点が、私はすでにレイアウトグリッドに与えているウィジェットに重みを与えることだが:
はそれを作るの違いを観察するために、この1行を追加しますか。?これは実用的ではないですか? – user7685914
それは本当に働いています..私はロジックを理解することに問題があると思います..ありがとうBryan ... – user7685914
@ user7685914: 'grid'を使って他のウィジェットを含むすべてのウィジェットは完全に異なるグリッド設定を使用します。親に与えられた重みは、内部に入れ子になっているウィジェットの列には影響しません。経験則では、グリッドを使用して直下の子を管理するすべてのフレームまたはウィンドウで、少なくとも1つの行と1つの列にゼロ以外の重みを与える必要があります。 –