用python显示鼠标位置

用python显示鼠标位置,python,linux,tkinter,xlib,Python,Linux,Tkinter,Xlib,我想跟踪我的鼠标位置,并在一个小窗口中显示。 为此,我创建了以下代码: #! /usr/bin/python from Tkinter import * from Xlib import display def mousepos(): data = display.Display().screen().root.query_pointer()._data return data["root_x"], data["root_y"] root = Tk() strl = "mo

我想跟踪我的鼠标位置,并在一个小窗口中显示。 为此,我创建了以下代码:

#! /usr/bin/python

from Tkinter import *
from Xlib import display

def mousepos():
    data = display.Display().screen().root.query_pointer()._data
    return data["root_x"], data["root_y"]

root = Tk()
strl = "mouse at {0}".format(mousepos())
lab = Label(root,text=strl)
lab.pack()
root.title("Mouseposition")

root.mainloop()
这个小脚本在启动时显示鼠标位置,但在鼠标移动时不刷新。我没有支持它(我说过我是python新手吗?)。 我想我必须使用Xlib中的一个事件来告诉我的脚本鼠标何时移动

如何刷新鼠标位置

  • 使用
    root.after
    定期调用
    update
  • 使用
    strl=tk.StringVar()
    tk.Label(…,textvariable=strl)
    允许更改标签文本
  • 调用
    strl.set()
    更改标签文本
  • 添加了
    screenroot
    的默认值,该值等于
    display.display().screen().root
    mousepos
    ,这样大部分长链函数调用 每次调用
    mousepos
    时不重复。在没有任何参数的情况下调用
    mousepos()
    ,将继续正常工作


  • 完美的有什么把戏能让窗口保持在前景吗?可能有,但我不知道有什么把戏。它可能依赖于窗口管理器和/或操作系统。据了解,在tk/tcl中,无法从it可靠地执行此操作。根据需要,可以在Windows中调用
    root.wm\u属性(“-topmost”,1)
    。确定。谢谢你的帮助:)我正在使用debian 6.0和gnome顺便说一句。所以,如果你还记得保持窗口顶部的任何技巧,请毫不犹豫地告诉我:)
    import Tkinter as tk
    import Xlib.display as display
    
    def mousepos(screenroot=display.Display().screen().root):
        pointer = screenroot.query_pointer()
        data = pointer._data
        return data["root_x"], data["root_y"]
    
    def update():
        strl.set("mouse at {0}".format(mousepos()))
        root.after(100, update)
    
    root = tk.Tk()
    strl = tk.StringVar()
    lab = tk.Label(root,textvariable=strl)
    lab.pack()
    root.after(100, update)
    root.title("Mouseposition")
    root.mainloop()