Найти - Пользователи
Полная версия: Обработка кликов мышью с сохранением координат
Начало » Python для новичков » Обработка кликов мышью с сохранением координат
1
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)
    def click(self, x, y, button, press):
        if button == 1:
            if press:
               print mousepos()
            else:
                print mousepos()
                self.stop()
C = Clicker()
C.run()
Все почти работает, только никак не могу понять, как забрать эти координаты и передать их дальше скрипту для обработки… Может есть более элегантный способ в начале работы скрипта считать координаты 2 точек?
JOHN_16
hexkey
если вы говорите что это работает, то,судя по этому коду, mousepos() возвращает вам координаты. в Clicker ловите 2 раза клик мыши, эти координаты делаете атрибутом Clicker, после завершения работы которого далее в скрипте образаетесь к нему за координаты и дделайте дальше что вам нужно.
Проблем то никаких не видно - просто реализация
hexkey
JOHN_16
hexkeyесли вы говорите что это работает, то,судя по этому коду, mousepos() возвращает вам координаты. в Clicker ловите 2 раза клик мыши, эти координаты делаете атрибутом Clicker, после завершения работы которого далее в скрипте образаетесь к нему за координаты и дделайте дальше что вам нужно.Проблем то никаких не видно - просто реализация
Пайтон пока только изучаю… Честно просидел часа 3, так и не понял, как это реализовать… Можно попросить пример?
JOHN_16
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 кортежи со значениями - дальше делай что тебе надо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB