光标跟踪Python Tkin

2024-10-02 00:37:24 发布

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

我正在创建一个国际象棋,我遇到的第一个问题是实现一个创建代码,它将允许我获得鼠标的当前位置,并在鼠标坐标系中打印鼠标的图像,基本上循环它,直到用户这么说。现在只是在计时器上。请随意用另一个gif替换图像。这只是代码的一部分

我不知道还能做什么。我基本上重新排列了代码,希望这是问题所在,但事实并非如此

def Mousecoords():

    pointxy = root.winfo_pointerxy()


    print(str(pointxy))

    canvas.create_image(pointxy[0], pointxy[1], image=whiteKing.pieceImage)
    time.sleep(0.3)


ok = 0


while ok <= 10:
    root.after(500, Mousecoords)
    ok += 1

现在,代码所做的是实时获取光标的实际坐标,在计时器持续时间内完成后,它会显示图像。但是,我要实现的是获得坐标和图像被模拟打印出来。在

现在,它的作用是:

获取坐标(1) 获取坐标(2) 获取坐标(3) 获取坐标(4) 获取坐标(5) 获取坐标(6) 获取坐标(7) 获取坐标(8) 获取坐标(9) 获取坐标(10)

打印图像(同时打印1-10张)

相反,我想让它做的是:

获取坐标(1) 在(1)处显示图像 获取坐标(2) 在(2)处显示图像 获取坐标(3) 在(3)处显示图像 获取坐标(4) 在(4)处显示图像 获取坐标(5) 在(5)处显示图像 获取坐标(6) 在(6)处显示图像 获取坐标(7) 在(7)处显示图像 获取坐标(8) 在(8)处显示图像 获取坐标(9) 在(9)处显示图像 获取坐标(10) 在(10)处显示图像

如果有其他方式或方法让图像跟随光标,请启发我谢谢 如果我没有解释清楚或者漏掉了几点,也请告诉我


Tags: 代码用户图像imageokroot鼠标gif
1条回答
网友
1楼 · 发布于 2024-10-02 00:37:24

您不应该使用winfo_pointerxy(),因为它返回相对于屏幕原点(屏幕左上角)的鼠标位置。在画布上使用bind('<Motion>', callback)来跟踪鼠标相对于画布的位置(这样就不需要使用.after())。另外,不应该每次更新图像时都重新创建图像,而应该更新图像的坐标。在

下面是示例代码:

from tkinter import *
from PIL import Image, ImageTk

def Mousecoords(event):
    pointxy = (event.x, event.y) # get the mouse position from event
    print(pointxy)
    canvas.coords(cimg, pointxy) # move the image to mouse postion

root = Tk()
img = ImageTk.PhotoImage(file='_red.png')
canvas = Canvas(width=400, height=200)
cimg = canvas.create_image(200, 100, image=img)
canvas.pack()
canvas.bind('<Motion>', Mousecoords) # track mouse movement
root.mainloop()

以及输出:

enter image description here

相关问题 更多 >

    热门问题