2016-09-29 16 views
0

私はここで頭を傷つけています。私はTkinterでとても新しいです。私は、枠内にラベルを置くのと同じように何かを理解しようとしています。私が持っている問題は、ラベルが表示され、親のサイズを継承しないときです。実際には、フレームが置かれているフレームのサイズが実際に変更されます。私は何を間違えているのですか?最後に、別のフレームにBGカラーを使用せずに、ラベルとボタンを追加したいと思います。私の経験からフレーム内のラベル(Tkinter)

main = Tk() 

main.geometry('1024x768+0+0') 

fm1 = LabelFrame(main, width = 1024, height = 68, bg = 'RED') 
fm1.grid(row = 0, columnspan = 2) 

label = Label(fm1, text = 'test') 
label.grid(row = 0, sticky = N+E+S+W) 

fm2 = Frame(main, width = 1024, height = 200, bg = 'BLUE') 
fm2.grid(row = 1, columnspan = 2) 

fm3 = Frame(main, width = 512, height = 300, bg = 'GREEN') 
fm3.grid(row = 2, column = 0) 

fm4 = Frame(main, width = 512, height = 300, bg = 'BLACK') 
fm4.grid(row = 2, column = 1) 

fm5 = Frame(main, width = 1024, height = 200, bg = 'YELLOW') 
fm5.grid(row = 3, columnspan = 2) 
+1

「[ラベル]は親のサイズを継承しない」とはどういう意味ですか?あなたはフォントが変わることを期待していますか?また、tkinterウィジェットは、子どもにフィットするように縮小(または展開)するように設計されています。 –

答えて

0

あなたがメインウィンドウ内で複数のフレームを配置し、それらをあなたがそれらを置く行/列を埋めるしたい場合、あなたはgrid_rowconfigureを使用して、メインウィンドウの行/列を設定する必要がありますし、 grid_columnconfigureとそれらに重量を与える。

私はどのように使用するかを示す構成行を含むように上記の例を再フォーマットしました。

main = Tk() 
main.geometry('1024x768+0+0') 

# Congigure the rows that are in use to have weight # 
main.grid_rowconfigure(0, weight = 1) 
main.grid_rowconfigure(1, weight = 1) 
main.grid_rowconfigure(2, weight = 1) 
main.grid_rowconfigure(3, weight = 1) 

# Congigure the cols that are in use to have weight # 
main.grid_columnconfigure(0, weight = 1) 
main.grid_columnconfigure(1, weight = 1) 


# Define Frames - use sticky to fill allocated row/column # 
fm1 = Frame(main, bg = 'RED') 
fm1.grid(row = 0, columnspan = 2, sticky='news') 

fm2 = Frame(main, bg = 'BLUE') 
fm2.grid(row = 1, columnspan = 2, sticky='news') 

fm3 = Frame(main, bg = 'GREEN') 
fm3.grid(row = 2, column = 0, sticky='news') 

fm4 = Frame(main, bg = 'BLACK') 
fm4.grid(row = 2, column = 1, sticky='news') 

fm5 = Frame(main, bg = 'YELLOW') 
fm5.grid(row = 3, columnspan = 2, sticky='news') 

# Notice 'pack' label - fine to use here as there are no conflicting grid widgets in this frame # 
lab = Label(fm1, text = 'TEST LABEL') 
lab.pack() 

main.mainloop() 

PS - 私はあなたの指定した高さと幅を削除した - あなたはそれが「グリッド化」されて構成された行/列内のすべてのスペースを埋めるために、フレームを言っているので、これは必要ありません。

最後に、最初のフレームはこの例では必ずしも必要ではない「LabelFrame」として定義されていました。

希望すると便利です。 ルーク

関連する問題