我将Python 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()
以Canvas作为主要元素。 Canvas具有绑定到它的点击/释放事件(例如,返回event.x
和event.y
)。我想以这种方式向画布添加背景图像:
canvas = tk.Canvas(root, bg='/path/to/image.png')
我已设法通过使用canvas.create_image
方法在画布上创建图像来设置背景图像,如Adding a background image in python中所述。但是,这会导致我的计划失败,因为event.x
和event.y
会返回背景图片的位置。
我正在寻找一种能够让我改变现有代码的最小解决方案。
答案 0 :(得分:1)
在画布上创建背景图像的唯一方法是在画布上创建图像对象。这样做不会影响示例中绑定函数返回的坐标。
答案 1 :(得分: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()