在背景tkinter和PIL上显示多个图像?

时间:2017-08-23 23:12:22

标签: python image tkinter python-imaging-library

我尝试用tkinter建立一个gui,在地图上添加像英雄联盟等游戏的文字。 令人惊讶的是你用tkinter创造这样一个gui有多快,但我遇到了一个我无法单独解决的问题:

点击事件的功能(在画布/地图上创建单词图片):

def sightstone(event):
 i = Image.open('Sightstone_item.png')
 i = i.resize((10, 10), Image.ANTIALIAS)
 img = ImageTk.PhotoImage(i)
 sword = tk.Label(panel, image=img, compound=tk.CENTER)
 sword.place(x=event.x, y=event.y, width=10, height=10)
 sword.image = img
 n = len(words) + 1
 string = 'sword '
 words.update({string + '%d' % n: [(event.x, event.y)]})
 dump.update({string + '%d' % n: [sword, img, i]})
 print('clicked at', event.x, event.y)

休息以进行设置:

window = tk.Tk()
Canvas = tk.Canvas(window, width=768, height=810)
img = Image.open('srift.jpg')
img = img.resize((768, 810), Image.ANTIALIAS)
mapimg = ImageTk.PhotoImage(img)
panel = tk.Label(window, image=mapimg)
panel.bind("<Control-Button-1>", sightstone)
panel.place(x=0, y=0, relwidth=1, relheight=1)
i = Image.open('Sightstone_item.png')
i = i.resize((10, 10), Image.ANTIALIAS)
img = ImageTk.PhotoImage(i)
sword1 = tk.Label(panel, image=img, compound=tk.CENTER)
sword1.place(x=384, y=405, width=10, height=10)
sword1.image = img
sword2 = tk.Label(panel, image=img, compound=tk.CENTER)
sword2.place(x=405, y=405, width=10, height=10)
sword2.image = img
Canvas.pack()
words = {}; dump = {}; string = ''
Canvas.find_all()
window.mainloop()

请注意,我只创建了sword1和2,以显示我想要的方式。但如果我 ctrl +左键单击以创建另一个单词sword1和2消失。我得到event.x和event.y或单词的坐标是非常重要的,因为我想用它来做一些事情。

1 个答案:

答案 0 :(得分:0)

致于回复的joaquin的积分 here! 我改变的是:我创建了一个Canvas并在画布上创建了背景图像,而不是生成标签。

<activity android:name="YourActivityName" >
</activity>

现在一切正常。 = ^)