我想跟踪我的鼠标位置并在一个小窗口中显示出来。
为此,我创建了这段代码:
#! /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/