Я хочу отслеживать положение мыши и показывать это в крошечном окне. Для этого я создал этот кусок кода:
#! /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
. Вызов 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()
root.wm_attributes("-topmost", 1)
.