2016-04-15 24 views
0

PILを使用してイメージをPythonにインポートし、Tkinterルートウィンドウ全体にまたがるttkメインフレームの背景として設定する方法はありますか?今のところ、これを行う方法はTkinterのルートだけです。また、ttkが画像のサイズを自己調整するようにする方法はありますか?たとえそれが小さくても画面全体を覆うようにするには?Ttk背景イメージ

合計すると、私はttkフレームに他のものを置いていなくても、イメージ全体がttkメインフレームボックスを覆いたいと思っています。例えば ため

PICは、コマンドウィンドウ全体をカバーしている場合、

ttk.Button(root, text="Hello").grid(column=0, row=0, sticky=(N,S,W,E)) 

は依然としてメインフレームのボタンを挿入します。ありがとう:)

+1

これを隠すつもりなら、これにttkフレームを使用するのは何ですか?イメージを含むラベルを作成し、それをウィンドウに塗りつぶすだけです。 –

+0

私はバックグラウンドのためだけにttkフレームを使用していません...私はその上で私のインターフェイスを実行するつもりです..ありがとう:) – LeroyJD

答えて

2

画像の背景をttkフレームに設定することはできません。画像のオプションは受け付けません。だから、フレームをttkにして、その中にラベルや何かを入れてから、下の例に合わせてフレームに広げてもらうことができます。

あなたが望むものを示す小さな例です。私たちは画像をpilで読み込みます。リンクされた画像はスクリーンサイズよりも小さくなります(私が願っています)。

このように、ルートウィンドウのジオメトリを画面全体に合わせるように設定すると、画像全体がこれよりも小さくなりますので、幅全体をカバーするようにサイズを変更します。最大高さと最小高さを上書きして、これに従って設定することができます。ちょうどサンプル値。その後、bgラベルとグリッドウィジェットをその上に置きます。ラベルは、グリッドを配置する他のウィジェットと比較して、スタックの順序が低くなり、上に表示されます。あるいは、キャンバスや別のウィジェットを使用することもできます。キャンバスにウィジェットを配置するには、create_windowを使用する必要があります。

import tkinter as tk 
from tkinter import ttk 
from PIL import Image, ImageTk 

root = tk.Tk() 
width, height = root.winfo_screenwidth(), root.winfo_screenheight() 
#print(root.winfo_screenheight(), root.winfo_screenwidth()) 
root.geometry("%dx%d" % (width, height)) 
#URL FOR BACKGROUND 
#https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&ved=0ahUKEwiVroCiyZHMAhXKeT4KHQHpDVAQjBwIBA&url=http%3A%2F%2Fwallpaperswide.com%2Fdownload%2Fblack_background_metal_hole_very_small-wallpaper-800x480.jpg&psig=AFQjCNEjZ7GDbjG9sFie-yXW3fP85_p0VQ&ust=1460840934258935 
image = Image.open("background.jpg") 
if image.size != (width, height): 
    image = image.resize((width, height), Image.ANTIALIAS) 
    #print("DONE RESIZING") 
    # image.save("background.jpg") 
#print(image.size) 
image = ImageTk.PhotoImage(image) 
bg_label = tk.Label(root, image = image) 
bg_label.place(x=0, y=0, relwidth=1, relheight=1) 
bg_label.image = image 
your_button = ttk.Button(root, text='This is a button') 
your_button.grid() 
root.mainloop() 
関連する問題