Позиция мыши Python Tkinter

Есть ли способ получить положение мыши и установить его как переменную?

3 ответа

Решение

Вы можете настроить обратный вызов, чтобы реагировать на <Motion> События:

import Tkinter as tk
root = tk.Tk()

def motion(event):
    x, y = event.x, event.y
    print('{}, {}'.format(x, y))

root.bind('<Motion>', motion)
root.mainloop()

Я не уверен, какую переменную вы хотите. Выше я установил локальные переменные x а также y к координатам мыши.

Если вы делаете motion метод класса, то вы можете установить атрибуты экземпляра self.x а также self.y к координатам мыши, которые затем могут быть доступны из других методов класса.

В любой момент времени вы можете использовать метод winfo_pointerx а также winfo_pointery чтобы получить координаты x,y относительно корневого окна. Чтобы преобразовать это в абсолютные координаты экрана, вы можете получить winfo_pointerx или же winfo_pointeryи из этого вычесть соответствующие winfo_rootx или же winfo_rooty

Например:

root = tk.Tk()
...
x = root.winfo_pointerx()
y = root.winfo_pointery()
abs_coord_x = root.winfo_pointerx() - root.winfo_rootx()
abs_coord_y = root.winfo_pointery() - root.winfo_rooty()

Я хотел бы улучшить ответ Брайана, поскольку он работает только при наличии одного монитора, но если у вас несколько мониторов, он всегда будет использовать ваши координаты относительно вашего основного монитора. чтобы найти его относительно обоих мониторов и получить точное положение, используйте vroot, вместо root, как это

root = tk.Tk()
...
x = root.winfo_pointerx()
y = root.winfo_pointery()
abs_coord_x = root.winfo_pointerx() - root.winfo_vrootx()
abs_coord_y = root.winfo_pointery() - root.winfo_vrooty()

Лично я предпочитаю использовать pyautoguiдаже в сочетании с Tkinter. Он не ограничивается приложением Tkinter, но работает на всем экране, даже в конфигурации с двумя экранами.

    import pyautogui
    x, y = pyautogui.position()

Если вы хотите сохранить различные позиции, добавьте событие при нажатии.
Я знаю, оригинальный вопрос о Tkinter.

Другие вопросы по тегам