我在网上找到的所有方法都只能提供我在桌面上的位置,我确实可以设置画布的位置并计算位置,但是如果窗口被移动到另一个位置,那么计算就会出错,因为在turtle graphics中没有方法可以得到窗口的位置
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中。
onmove()
onclick()
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
pip install pywin32
2条答案
按热度按时间zvms9eto1#
如果你想要的是每次光标移动时的一个事件,那么我们可以这样做:
当你开始在窗口中移动光标时,它的位置将显示在窗口的中心。
onmove()
是以方法的形式编写的,可以像屏幕的onclick()
方法一样添加到turtle中。nvbavucw2#
有很多方法,我推荐这一个:
你需要知道任务的名称,你可以在“任务管理器”中找到它。我在我的例子中使用了那个窗口。
下面是我的终端运行它时的输出:(3461、350、4529、1179)
我有问题安装库第一,但它的工作使用:
pip install pywin32