Имитация щелчков мышью на Python

В настоящее время я работаю над тем, чтобы мой Nintendo Wiimote (на самом деле довольно грустно) работал с моим компьютером в качестве мыши. Мне удалось заставить ручку нунчука перемещать мышь вверх и вниз, влево и вправо по экрану! Это было так захватывающе. Теперь я застрял.

Я хочу щелкнуть левой / правой кнопкой мыши по объектам через python, когда я нажимаю A. Когда я пошел искать, все, что он придумал, было tkinter?

Итак, мой вопрос: что мне вызвать, чтобы заставить python щелкнуть левой / правой кнопкой мыши по рабочему столу, и, если возможно, предоставить фрагмент?

Спасибо за помощь!

ПРИМЕЧАНИЕ. Думаю, я забыл упомянуть, что это для Linux.


person dbdii407    schedule 23.08.2010    source источник
comment
Вероятно, это будет зависеть от ОС / оконной системы. В идеале должны быть привязки python к оконной системе вашей операционной системы. Обычно аргументы очень похожи на вызовы C / C ++ / C # / Objective-C, в которых фактически написана документация. Или вам может повезти, и у вас есть настоящие документы python. По крайней мере, опубликуйте, на какой у вас ОС, чтобы люди могли помочь.   -  person aaronasterling    schedule 23.08.2010
comment
Вероятно, этот ответ не актуален, но, возможно, вы могли бы проверить исходный код проекта Sikuli. Это джайтон, но ...   -  person joaquin    schedule 23.08.2010
comment
Похоже, хороший проект ... что ты используешь для перемещения мыши? Вы делаете это через Python или другим способом? И, конечно, на какой OS / DE / WM? Кстати, несколько раз назад я нашел драйвер Xorg, который должен позволять использовать Wiimote в качестве мыши (для проекта интерактивной доски ir-pen), может быть, он справится с этой задачей ..?   -  person redShadow    schedule 23.08.2010
comment
Я перемещаю мышь с помощью libX11 на python. Я не могу использовать ИК-порт, поэтому мне нужно щелкать мышью.   -  person dbdii407    schedule 23.08.2010
comment
github.com/msanders/autopy#readme Здесь возник другой вопрос, и он имитирует щелчки мыши. Может, вы посмотрите и увидите, как они это делают.   -  person aaronasterling    schedule 24.08.2010


Ответы (9)


python-uinput очень прост в использовании.

http://tjjr.fi/software/python-uinput/

Вот пример https://github.com/tuomasjjrasanen/python-uinput/blob/master/examples/mouse.py

person Epeli    schedule 26.08.2010
comment
Есть идеи, как выполнять такие задачи без использования внешних библиотек / инструментов? - person Jewenile; 22.07.2017
comment
@Jewenile, вы можете напрямую управлять модулем ядра linux uinput. Вы можете увидеть исходный код python-uinput, чтобы понять, как это может быть реализовано. github.com/tuomasjjrasanen/python-uinput - person oleskii; 02.01.2019

Вы можете использовать PyMouse, который теперь объединен с PyUserInput. Я установил его через pip:

  1. apt-get install python-pip

  2. pip install pymouse

В некоторых случаях он использовал курсор, а в других имитировал события мыши без курсора.

from pymouse import PyMouse

m = PyMouse()
m.position() #gets mouse current position coordinates
m.move(x,y)
m.click(x,y) #the third argument "1" represents the mouse button
m.press(x,y) #mouse button press
m.release(x,y) #mouse button release

Вы также можете указать, какую кнопку мыши вы хотите использовать. Ex левая кнопка:

m.click(x,y,1)

Имейте в виду, что в Linux для этого требуется Xlib.

person Ed Shway    schedule 13.04.2013

Пакет evdev обеспечивает привязки к частям подсистемы обработки ввода в Linux. Также бывает, что для uinput есть питонический интерфейс.

Пример отправки события относительного движения и щелчка левой кнопкой мыши с помощью evdev:

from evdev import UInput, ecodes as e

capabilities = {
    e.EV_REL : (e.REL_X, e.REL_Y), 
    e.EV_KEY : (e.BTN_LEFT, e.BTN_RIGHT),
}

with UInput(capabilities) as ui:
    ui.write(e.EV_REL, e.REL_X, 10)
    ui.write(e.EV_REL, e.REL_Y, 10)
    ui.write(e.EV_KEY, e.BTN_LEFT, 1)
    ui.syn()
person gvalkov    schedule 23.08.2012

PyAutoGui отлично работает .. Спасибо Al Sweigart ...

Пример мой ...

import pyautogui

pyautogui.FAILSAFE = False

for x in range(555, 899):
    pyautogui.moveTo(x, x)
person Kishore Kashyap    schedule 09.05.2015

вы можете найти это полезным:

http://www.eventghost.org/

Удачи!

person reckoner    schedule 23.08.2010
comment
а под Linux вы можете использовать uinput. - person tonfa; 23.08.2010

Вы можете попробовать связать программу XTE из сценария Python.

person Agnius Vasiliauskas    schedule 25.08.2010

Откройте свой терминал и перейдите к cd / usr / share / pyshared / twisted /tocols / mice и пусть этот __init__.py mouseman.py скрипт python подойдет вам, проверьте их.

person Community    schedule 06.03.2012

Вы можете установить модуль автоматизации PyAutoGUI GUI из PyPI (запустить pip install pyautogui), а затем вызвать pyautogui.click(), чтобы щелкнуть определенные координаты X и Y экрана:

>>> import pyautogui
>>> pyautogui.click(50, 100)
>>> pyautogui.moveTo(200, 200)

PyAutoGUI работает в Windows, Mac и Linux, а также на Python 2 и 3. Он также может имитировать клавиатуру, перетаскивать мышь, делать снимки экрана и выполнять простое распознавание снимков экрана.

Полные документы находятся по адресу https://pyautogui.readthedocs.org/.

person Al Sweigart    schedule 30.04.2015

Я не видел, чтобы об этом упоминалось, так что вот оно - есть еще python-dogtail; видеть:

Для этого требуется «Включить вспомогательные технологии» на рабочем столе Gnome, но в принципе можно получить, например, имена кнопок графического интерфейса пользователя приложения и разрешить виртуальные щелчки по ним (а не через координаты x / y).

person sdaau    schedule 18.10.2013