【问题标题】:Grab Tkinter cursor抓取 Tkinter 光标
【发布时间】:2019-07-05 18:55:39
【问题描述】:

我想用 Tkinter 捕捉鼠标的相对运动。我附加了一个<Motion> 侦听器,并且能够移动鼠标。但是,我希望能够“抓取”/“锁定”光标,使其不可见并且不能离开窗口(就像游戏一样)。我的目标是在不受窗口边框限制的情况下获得相对的鼠标移动。如何实现?

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    <Motion> 只绑定到根窗口。如果您将鼠标移到根窗口之外,它不再生成鼠标光标的 x 和 y 位置。

    对于windows,我能想到的是定期获取光标的当前位置,并限制其位置。下面将尝试控制光标x在根窗口中的位置。

    from tkinter import *
    from ctypes import windll, Structure, c_long, byref
    
    root = Tk()
    root.geometry("400x200")
    user = windll.user32
    
    class Position(Structure):
        _fields_ = [("x", c_long), ("y", c_long)]
    
    def ctrl_x_pos():
        pt = Position()
        windll.user32.GetCursorPos(byref(pt))
        if pt.x < root.winfo_x()+5:
            x = root.winfo_x()+5
            y=pt.y
            user.SetCursorPos(x, y)
        elif pt.x > root.winfo_x()+405:
            x = root.winfo_x()+405
            y = pt.y
            user.SetCursorPos(x, y)
        root.after(5, ctrl_x_pos)
    
    root.after(5,ctrl_x_pos)
    root.bind('<Escape>',lambda e: root.destroy())
    root.mainloop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 2011-08-07
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多