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

#! /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将继续正常工作。

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()

关于python - 用python显示鼠标位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8041389/

10-16 19:13