Форум сайта python.su
В программе требуется определить нажата ли в данный момент левая кнопка мыши, и если да то начать сохранять координаты курсора, до момента отпускания. Как это можно реализовать, в win32api не могу не чего найти(
Офлайн
http://python.su/forum/viewtopic.php?pid=39241#p39241 тут ловятся действия мыши и клавиатуры. Думаю, разберешься
Офлайн
hellsladeК сожалению, я не смог разобраться так как опыта практически нет( Уже четвертые сутки пытаюсь, решил обратится за помощью.
http://python.su/forum/viewtopic.php?pid=39241#p39241 тут ловятся действия мыши и клавиатуры. Думаю, разберешься
Отредактировано (Фев. 22, 2010 18:57:04)
Офлайн
А такого рода конструкции не работают?
def coord_save(event):
...
widget.bind("<Button-1>", coord_save)
Отредактировано (Фев. 22, 2010 19:18:29)
Офлайн
Да, действительно не работает. А вот если по событию <Button-1> вызвать прозачное окошко и на нём по событию <Motion> вызывать coord_save, а по <ButtonRelease> закрыть то самое прозрачное окошко, должно получиться.
Это всё я говорю про Tkinter.
Отредактировано (Фев. 22, 2010 19:23:04)
Офлайн
def OnMove(self, event):
pos = event.GetPosition()
self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y))
Офлайн
self - указатель на самого себя внутри объекта (точнее даже экземпляра класса). Нужен для явного указания чьи свойства и методы используются. Понятие общее для питона вообще.
event - тут видимо условное место привязки “события”. т.е. event - событие (движение мышкой) и у этого события есть метод получения текущей координаты. Более точно можно сказать изучая документацию.
Офлайн
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()
Офлайн
Вы говорили про Tkinter а показываете код с использованием библиотеки wx
Офлайн
igor.kaistЭто я говорил про Tkinter, а GizGizmo библиотеку не уточнял.
Вы говорили про Tkinter а показываете код с использованием библиотеки wx
Отредактировано (Фев. 23, 2010 12:32:16)
Офлайн