2012-01-18 10 views
4

私はpythonでttk/tkinterで画像を表示しようとしています。イメージには白い境界線があり、このイメージをより大きな白い背景に表示したいので、周囲に空白がたくさんあります。ttk/pythonのラベルウィジェットのパディングカラーを変更してください

これは、それぞれ100pxのラベルに「padx」と「pady」を使用しています。残念ながら、パディング領域はグレーです。

ラベルの前景色と背景色を無駄に変更しようとしました。パディング領域はグレーのままです。次に、フレームウィジェットにラベルを貼り、フレームのフォアグラウンド/バックグラウンドカラーを変更しようとしました。しかし残念ながら、Frameウィジェットはwidth =とheight = argumentsを聞きません。また、前景の色を変更した場合、SUNKENの境界線は色が変わります。本当にクールですが、私にとってはまったく役に立たないです。

誰でも私にこれを手伝ってもらえますか?現在の無駄なコードは次のようになります:

style = Style() 

style.configure('Dlr.TFrame', background="blue", relief=SUNKEN) 
frm = Frame(self, style="Dlr.TFrame") # does not work: ,height=500,width=500) 
frm.grid(row=0, column=0, rowspan=8, columnspan=2, sticky=N+S+E+W) 

style.configure("Dlr.TLabel", background="white") 
style.configure("Dlr.TLabel.padding", background="white") # just guessed ... 
self.IMG = Label(frm, style="Dlr.TLabel") 
self.IMG.grid(row=0, column=0, padx=100, pady=100) 

答えて

3

フレーム内にイメージを置いてフレームの色を設定する技術は適切です。

gridpackの両方がデフォルトで「収縮に適合」するため、幅と高さは機能しません。これはジオメトリ伝播と呼ばれます。この機能をオンまたはオフにするには、含まれているウィジェットのgrid_propagateまたはpack_propagateというメソッドを使用します。

たとえば、frm.grid_propagate(False)を呼び出して、ウィジェットと高さをfrmに設定すると、幅と高さが優先されます。

+0

ご回答ありがとうございます。私はこれと混合された結果を得ました - あるいはgGoodのニュースと悪いニュース。良いニュースは、フレームを 'grid_propagate(false)'で固定サイズにすることでした。悪いニュースは、背景がまだ灰色であることです。そして、画像はフレームの左上隅にあります。 新しいコード: 'style.configure( 'Dlr.TFrame'、relief = RAISED、bg =" white ")#bgが機能しない frm = Frame(self、style =" Dlr.TFrame "、width = 500、 frm.grid(行= 0、列= 0、行スパン= 10、列スペース= 2) frm.grid_propagate(False) #画像/ラベルの変更なし、padx/yを削除したばかりです – Axel

+0

あなたが上記のように "bg"だけでなく、完全なキーワード "背景"を使用しなければなりません。 – timeyyy