用户点击后关闭图像(Python和枕头)

2024-10-01 00:32:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python开发一款选择你自己的冒险游戏。每隔一段时间,我希望用户得到一个场景,并允许在该场景中找到对象。无论他们找到什么都可以放进他们的库存,当他们准备停止寻找物品时,他们可以点击左下角的“退出”按钮。但是,我在实际获取按钮点击坐标时遇到了一些错误。在

到目前为止,我有这个:

root = Tk()
imageIQ1 = Canvas(root, width=1000, height=1000)
imageIQ1.pack()
original = Image.open("prison.jpg")
original = original.resize((1000,1000)) #resize image
img = ImageTk.PhotoImage(original)
imageIQ1.create_image(0, 0, image=img, anchor="nw")

def getcoors(eventcoors):
    global x0,y0
    x0 = evencoors.x
    y0 = evencoors.y
    print(x0,y0)

在用户点击一组特定的坐标(或它们附近的某个地方)后,我希望程序从屏幕上清除图片并继续程序。对于疯狂,点击(300,400)到(500,500)之间的任何地方都会关闭图片并继续程序的其余部分。我知道这将使用某种形式的循环

^{pr2}$

但我不确定我该怎么做才能清除图像。我读过关于使用.kill()和.terminate()之类的东西,但在这种情况下它们不起作用。在

有什么想法吗?在


Tags: 用户image程序img地方场景图片root
1条回答
网友
1楼 · 发布于 2024-10-01 00:32:47

您需要有图像的引用,以便以后能够删除它,如中所示:

canvImg = imageIQ1.create_image(0, 0, image=img, anchor="nw")

然后当你打电话:

^{pr2}$

它将被删除。在


基于this,您可以将其放入事件方法中,例如:

^{3}$

您的最终代码应该如下所示:

from tkinter import *
from PIL import ImageTk, Image

root = Tk()
imageIQ1 = Canvas(root, width=1000, height=1000)
imageIQ1.pack()
original = Image.open("prison.jpg")
original = original.resize((1000,1000)) #resize image
img = ImageTk.PhotoImage(original)
canvImg = imageIQ1.create_image(0, 0, image=img, anchor="nw")

def motion(event):
    x, y = event.x, event.y

    someSpecificX = 142
    someSpecificY = 53
    marginX = 100
    marginY = 100
    print(x, y)

    if x in range(someSpecificX - marginX, someSpecificX + marginX):
        if y in range(someSpecificY - marginY, someSpecificY + marginY):
            imageIQ1.delete(canvImg)


imageIQ1.bind('<Button-1>', motion)

root.mainloop()

相关问题 更多 >