#python #loops #mouse
#python #циклы #мышь
Вопрос:
я использую PyMouse (событие) для определения, нажата ли кнопка мыши:
from pymouse import PyMouseEvent
class DetectMouseClick(PyMouseEvent):
def __init__(self):
PyMouseEvent.__init__(self)
def click(self, x, y, button, press):
if button == 1:
if press:
print("click")
else:
self.stop()
O = DetectMouseClick()
O.run()
Это работает до сих пор, но теперь я хочу выполнять цикл print("click")
до тех пор, пока мышь больше не будет нажата… я пытался:
def click(self, x, y, button, press):
if button == 1:
if press:
do = 1
while do == 1:
print("down")
if not press:
do = 0
И еще кое-что. Нравится:
while press:
print("click")
Кто-нибудь может мне помочь? Спасибо!
Комментарии:
1. Я не думаю, что вы можете, так как сама мышь не отправляет постоянный поток «щелчков» при нажатии кнопки. Это механическая «проблема», не связанная с программным обеспечением. РЕДАКТИРОВАТЬ: вместо этого вы должны попробовать использовать джойстик 😉
Ответ №1:
Я думаю, что, как указывает Оли в своем комментарии, нет постоянного потока щелчков, когда кнопка мыши удерживается нажатой, поэтому вам нужно будет иметь print
цикл. while
Выполнение цикла в том же потоке предотвращает запуск события щелчка при отпускании мыши, поэтому единственный способ, который я могу придумать для достижения того, что вам нужно print("click")
, — это использовать отдельный поток.
Я не программист на Python, но у меня была проблема, которая работает на моей машине (Python 2.7 в Windows 8.1):
from pymouse import PyMouseEvent
from threading import Thread
class DetectMouseClick(PyMouseEvent):
def __init__(self):
PyMouseEvent.__init__(self)
def print_message(self):
while self.do == 1:
print("click")
def click(self, x, y, button, press):
if button == 1:
if press:
print("click")
self.do = 1
self.thread = Thread(target = self.print_message)
self.thread.start()
else:
self.do = 0
print("end")
else:
self.do = 0
self.stop()
O = DetectMouseClick()
O.run()
Комментарии:
1. @Aaroniker — нет проблем, рад получить мой первый ответ на StackOverflow принят. Я слишком долго был вуайеристом!