2017-02-27 3 views
0

実際に私の頭を傷つけるのは本当に悪いです、私は単純なことを吸っています、私はtkinterフレームにボタンをパックしたいのですが、問題は私がフレームそれにボタンをパック私が唯一のボタンを参照してください...ボタンはPython 3.6でパックされていますフレーム

from tkinter import * 

root = Tk() 
frame = Frame(root,bg ='yellow') 
frame.pack() 

bottomframe = Frame(root,bg = 'red') 
bottomframe.pack(side = BOTTOM) 

redbutton = Button(frame, text = "Red", fg = "red") 
redbutton.pack(side = LEFT) 

blackbutton = Button(bottomframe, text = "Black", fg = "black") 
blackbutton.pack(side = BOTTOM) 

root.mainloop() 

これは正しくフレーム私の2つのボタンが表示されていないが、それにボタンをパックする場合、私は色を見るいけないので、私はそれを知って、いけません私は何か愚かで間違っているかどうかわからない、とにかく助けていただければ幸いです、ありがとう、コーディングを続けてください!

+0

なぜフレームを作成していますか? 'root.configure(bg = 'yellow')'を使ってください。 – Jake

+0

私は特定の理由でフレームを持っていますが、同じものが含まれていないフレームがいくつかあります。 – Prosity

+0

黒いボタンが置き換えられていますフレームの位置にある。要素の配布方法を教えてください。 – eyllanesc

答えて

0

フレーム(実際にはすべてのウィジェット)は、内容に合わせて縮小または拡大するように設計されています。フレームに子がない場合、設定されたサイズのままですが、子を追加すると、親によって制約されていない限り縮小または収縮します。

frameがほとんどの領域を占有し、bottomframeを底面に沿ったボタンのストリップにすると仮定すると、packに適切な引数を指定する必要があります。例えば

frame.pack(fill="both", expand=True) 
bottomframe.pack(side = BOTTOM, fill="x") 

fillは、ウィジェットがそれに与えられたスペースに収まる方法を制御するために使用されます。値を "both"に設定すると、tkinterはxとyの両方の方向にフレームを親に塗りつぶすように指示します。値「x」を使用することは、そのスペースを「x」方向にのみ埋めることを意味します。

expandは、余分なスペースの割り当て方法を制御するために使用されます。 Trueに設定すると、このウィジェットは親の残りのスペースを埋めるように展開されます。 Falseに設定すると余分なスペースを消費しません。

packを使用する場合、expandTrueに設定されているウィジェットが通常1つありますが、親を半分に分割する場合は2つのウィジェットがよく使用されます。

+0

iこの種のことがありますが、別のコードでは、フレームに幅と高さが設定されていますが、十分ではありませんか? :/ – Prosity

+0

@Prosity:幅と高さを設定するだけでは不十分です。私の答えで言ったように、フレームはその内容に合わせて伸びたり縮んだりします。一般に、フレームに明示的な幅と高さを与える必要はありません。 –

+0

どうすればフレームの種類を「ロック」にするか、特定のサイズに設定することができますか?出来ますか ?それともこれを実現できる別のウィジェットがありますか?ありがとう:) – Prosity

関連する問題