Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Как определить нажатие кнопок мышки. [RSS Feed]

#1 Фев. 17, 2010 23:29:05

GizGizmo
От:
Зарегистрирован: 2010-02-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

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



Офлайн

#2 Фев. 18, 2010 14:42:40

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

http://python.su/forum/viewtopic.php?pid=39241#p39241 тут ловятся действия мыши и клавиатуры. Думаю, разберешься



Офлайн

#3 Фев. 22, 2010 18:31:38

GizGizmo
От:
Зарегистрирован: 2010-02-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

hellslade
http://python.su/forum/viewtopic.php?pid=39241#p39241 тут ловятся действия мыши и клавиатуры. Думаю, разберешься
К сожалению, я не смог разобраться так как опыта практически нет( Уже четвертые сутки пытаюсь, решил обратится за помощью.

Нашел программку которая выводит координаты мышки http://python.su/translate/wxpython-in-action/4/
Если кому не сложно покажите как можно реализовать запись координат мышки, когда зажата левая кнопка мыши.



Отредактировано (Фев. 22, 2010 18:57:04)

Офлайн

#4 Фев. 22, 2010 19:16:08

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

А такого рода конструкции не работают?

def coord_save(event):
...

widget.bind("<Button-1>", coord_save)
Тут ещё посмотрите: http://www.intuit.ru/department/pl/python/12/2.html
В примере обратите внимание на то, как получить координаты x_root, y_root, x, y Это именно то, что вам нужно.



Отредактировано (Фев. 22, 2010 19:18:29)

Офлайн

#5 Фев. 22, 2010 19:21:58

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

Да, действительно не работает. А вот если по событию <Button-1> вызвать прозачное окошко и на нём по событию <Motion> вызывать coord_save, а по <ButtonRelease> закрыть то самое прозрачное окошко, должно получиться.
Это всё я говорю про Tkinter.



Отредактировано (Фев. 22, 2010 19:23:04)

Офлайн

#6 Фев. 22, 2010 23:51:51

GizGizmo
От:
Зарегистрирован: 2010-02-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

def OnMove(self, event):

pos = event.GetPosition()

self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y))
Я не могу понять для чего нужны self и event. В книжках находил, но там как то все запутанно.



Офлайн

#7 Фев. 23, 2010 01:12:58

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

self - указатель на самого себя внутри объекта (точнее даже экземпляра класса). Нужен для явного указания чьи свойства и методы используются. Понятие общее для питона вообще.

event - тут видимо условное место привязки “события”. т.е. event - событие (движение мышкой) и у этого события есть метод получения текущей координаты. Более точно можно сказать изучая документацию.

Офлайн

#8 Фев. 23, 2010 02:02:53

GizGizmo
От:
Зарегистрирован: 2010-02-17
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

Ferroman
self - указатель на самого себя внутри объекта (точнее даже экземпляра класса). Нужен для явного указания чьи свойства и методы используются. Понятие общее для питона вообще.

event - тут видимо условное место привязки “события”. т.е. event - событие (движение мышкой) и у этого события есть метод получения текущей координаты. Более точно можно сказать изучая документацию.
Спасибо, буду разбираться.

#!/bin/env python

import wx
import win32api

class MyFrame(wx.Frame):

def __init__(self):
wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300))
panel = wx.Panel(self, -1)
panel.Bind(wx.EVT_MOTION, self.OnMove)
wx.StaticText(panel, -1, "Pos:", pos=(10, 12))
self.posCtrl = wx.TextCtrl(panel, -1, "", pos=(40, 10))

def OnMove(self, event):
pos = event.GetPosition()
self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y))

a = win32api.GetSystemTime() #узнаем время
b = a[7]+a[6]*1000+a[5]*60000 # перевожу время в миллисекунды, потом после сохранения вычту
# первое значение.
# Тут надо вставить проверку нажата ли левая кнопка мыши, и если да
# то в c[3]=1 если нет то с [3]=0
c=(pos.x, pos.y, b)
print (c)

if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show(True)
app.MainLoop()
К списку c не могу добавить значение левой кнопки мыши. Пытался self.bind(“<Button-1>”, die) но где то ошибаюсь.



Офлайн

#9 Фев. 23, 2010 11:37:37

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

Вы говорили про Tkinter а показываете код с использованием библиотеки wx



Офлайн

#10 Фев. 23, 2010 12:31:57

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Как определить нажатие кнопок мышки.

igor.kaist
Вы говорили про Tkinter а показываете код с использованием библиотеки wx
Это я говорил про Tkinter, а GizGizmo библиотеку не уточнял.



Отредактировано (Фев. 23, 2010 12:32:16)

Офлайн

  • Начало
  • » GUI
  • » Как определить нажатие кнопок мышки.[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version