2017-04-19 7 views
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() 

以下はその外観です。 enter image description here

私は、これらのボタン/ラジオボタンは、彼らは私が

grid(sticky=tk.N+tk.E+tk.W) . 

を使用する。しかし、それは動作しない原因に入れたフレームの限界まで伸ばす期待しています。

答えて

0

frameの行と列に正しく重みを付けましたが、他の場所には重みを適用していません。 frame1にラジオボタンを配置すると、そのフレームよりも小さくなります。列0の端に「固着」していますが、列0はframe1のすべての領域を占めるように構成されていません。

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

しかし、どのような点が、私はすでにレイアウトグリッドに与えているウィジェットに重みを与えることだが:

はそれを作るの違いを観察するために、この1行を追加しますか。?これは実用的ではないですか? – user7685914

+0

それは本当に働いています..私はロジックを理解することに問題があると思います..ありがとうBryan ... – user7685914

+0

@ user7685914: 'grid'を使って他のウィジェットを含むすべてのウィジェットは完全に異なるグリッド設定を使用します。親に与えられた重みは、内部に入れ子になっているウィジェットの列には影響しません。経験則では、グリッドを使用して直下の子を管理するすべてのフレームまたはウィンドウで、少なくとも1つの行と1つの列にゼロ以外の重みを与える必要があります。 –

関連する問題