Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 13, 2014 02:16:21

hexkey
Зарегистрирован: 2013-12-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка кликов мышью с сохранением координат

Кратко опишу задачу. Программа работает по следующему алгаритму:

  • Ждем клика мышью
  • Записываем координаты куда кликнули мышью
  • Ждем пока отпустят кнопку мыши
  • Записываем координаты где отпустили
  • Работаем с этими данными дальше в скрипте
То есть как бы выделяем некую зону на экране и записываем ее начальные (верхний левый угол зоны выделения) и конечные (нижний правый угол зоны выделения). Реализовать это дело надо под Линуксом.

Пошарил в интернетах и слепил из каких-то примеров с различных источников что-то такое:
from pymouse import PyMouseEvent
from Xlib import display
def mousepos():
    data = display.Display().screen().root.query_pointer()._data
    return data["root_x"], data["root_y"]
class Clicker(PyMouseEvent):
    def __init__(self):
        PyMouseEvent.__init__(self)
    def click(self, x, y, button, press):
        if button == 1:
            if press:
               print mousepos()
            else:
                print mousepos()
                self.stop()
C = Clicker()
C.run()
Все почти работает, только никак не могу понять, как забрать эти координаты и передать их дальше скрипту для обработки… Может есть более элегантный способ в начале работы скрипта считать координаты 2 точек?

Офлайн

#2 Янв. 13, 2014 03:28:25

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Обработка кликов мышью с сохранением координат

hexkey
если вы говорите что это работает, то,судя по этому коду, mousepos() возвращает вам координаты. в Clicker ловите 2 раза клик мыши, эти координаты делаете атрибутом Clicker, после завершения работы которого далее в скрипте образаетесь к нему за координаты и дделайте дальше что вам нужно.
Проблем то никаких не видно - просто реализация



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Янв. 13, 2014 09:06:19

hexkey
Зарегистрирован: 2013-12-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка кликов мышью с сохранением координат

JOHN_16
hexkeyесли вы говорите что это работает, то,судя по этому коду, mousepos() возвращает вам координаты. в Clicker ловите 2 раза клик мыши, эти координаты делаете атрибутом Clicker, после завершения работы которого далее в скрипте образаетесь к нему за координаты и дделайте дальше что вам нужно.Проблем то никаких не видно - просто реализация
Пайтон пока только изучаю… Честно просидел часа 3, так и не понял, как это реализовать… Можно попросить пример?

Офлайн

#4 Янв. 13, 2014 12:34:56

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Обработка кликов мышью с сохранением координат

hexkey

from pymouse import PyMouseEvent
from Xlib import display
def mousepos():
    data = display.Display().screen().root.query_pointer()._data
    return data["root_x"], data["root_y"]
class Clicker(PyMouseEvent):
    def __init__(self):
        PyMouseEvent.__init__(self)
        self.coordinates=[]
    def click(self, x, y, button, press):
        if button == 1:
            if press:
               self.coordinates.append(mousepos())
               print 1
            else:
                self.coordinates.append(mousepos())
                self.stop()
c = Clicker()
c.run()
a,b=c.coordinates
print a,b
в переменных a и b кортежи со значениями - дальше делай что тебе надо



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version