如何获得鼠标的位置(没有任何点击,只是移动)在一个海龟窗口,而不是桌面?(Python)

2izufjch  于 2023-03-28  发布在  Python
关注(0)|答案(2)|浏览(184)

我在网上找到的所有方法都只能提供我在桌面上的位置,我确实可以设置画布的位置并计算位置,但是如果窗口被移动到另一个位置,那么计算就会出错,因为在turtle graphics中没有方法可以得到窗口的位置

zvms9eto

zvms9eto1#

如果你想要的是每次光标移动时的一个事件,那么我们可以这样做:

from turtle import Screen, Turtle

def onmove(self, fun, add=None):
    if fun is None:
        self.cv.unbind('<Motion>')
    else:
        def eventfun(event):
            fun(self.cv.canvasx(event.x) / self.xscale, -self.cv.canvasy(event.y) / self.yscale)

        self.cv.bind('<Motion>', eventfun, add)

def show_cursor_position(x, y):
    onmove(screen, None)  # disable handler inside handler

    turtle.clear()
    turtle.write((x, y), align='center', font=('Arial', 18, 'normal'))

    onmove(screen, show_cursor_position)  # reenable handler

screen = Screen()

turtle = Turtle()
turtle.hideturtle()

onmove(screen, show_cursor_position)

screen.mainloop()

当你开始在窗口中移动光标时,它的位置将显示在窗口的中心。onmove()是以方法的形式编写的,可以像屏幕的onclick()方法一样添加到turtle中。

nvbavucw

nvbavucw2#

有很多方法,我推荐这一个:
你需要知道任务的名称,你可以在“任务管理器”中找到它。我在我的例子中使用了那个窗口。

from win32gui import FindWindow, GetWindowRect

window_handle = FindWindow(None, "Task Manager")
window_rect   = GetWindowRect(window_handle)

print(window_rect)

下面是我的终端运行它时的输出:(3461、350、4529、1179)
我有问题安装库第一,但它的工作使用:pip install pywin32

相关问题