2017-07-25 13 views
0

私は主要な要素としてキャンバスに新しいキャンバス要素を追加せずにtkinter背景画像を設定できますか?

import tkinter as tk 

root = tk.Tk() 
canvas = tk.Canvas(root, height=200, width=200, bg="salmon") 
canvas.pack(fill=tk.BOTH, expand=tk.YES) 

def click(event): 
    print(event.x) 
    print(event.y) 

def release(event): 
    print(event.x) 
    print(event.y) 

canvas.bind("<Button-1>", click) 
canvas.bind("<ButtonRelease-1>", release) 

root.mainloop() 

に簡略化され、PythonのTkinterのプログラムを持っています。キャンバスにはクリック/リリースイベントがバインドされています(たとえば、event.xevent.yを返します)。私は、このようにキャンバスに背景画像を追加したい:私はAdding a background image in pythonで説明したように、canvas.create_image方法を使用してキャンバス上の画像を作成することで、背景画像を設定するために管理している

canvas = tk.Canvas(root, bg='/path/to/image.png') 

。しかし、これは私のプログラムをevent.xevent.yというバックグラウンドイメージの位置に戻しました。

私は既存のコードを最小限に抑えるためのソリューションを探しています。

+0

このコードの[最小、完全、および検証可能な例](https://stackoverflow.com/help/mcve)を教えていただいた場合、質問に適切なフィードバックを提供することができます。 –

+0

@SierraMountainTech私は非常に単純化されたコードを提供して私の質問を編集しました。 – Jan

+1

この行に背景色としてイメージを追加しようとしています: 'canvas = tk.Canvas(root、bg = '/ path/to/image.png')' –

答えて

0

PhotoImageを使用して画像を読み込んで使用する必要がある場合は、create_imageを使用してその画像をキャンバスに設定します。

はこの打撃を与える:

import tkinter as tk 

root = tk.Tk() 
canvas = tk.Canvas(root, height=200, width=200, bg="salmon") 
canvas.pack(fill=tk.BOTH, expand=tk.YES) 

def click(event): 
    print(event.x) 
    print(event.y) 

def release(event): 
    print(event.x) 
    print(event.y) 

canvas.bind("<Button-1>", click) 
canvas.bind("<ButtonRelease-1>", release) 

my_image = tk.PhotoImage(file='/path/to/image.png') 
canvas.create_image(10, 10, image=my_image, anchor='nw') 

root.mainloop() 
1

キャンバスに背景画像を作成するための唯一の方法は、キャンバス上の画像オブジェクトを作成することです。そうすることで、あなたの例の束縛された関数が返す座標には影響しません。

関連する問題