Можно ли удерживать нажатой кнопку мыши в течение определенного времени с помощью pynput?

#python #mouse #pynput

Вопрос:

Я знаю, что есть похожие вопросы, но они касаются контроллера клавиатуры, и мне нужен контроллер мыши.

Итак, у меня есть программа, в которой мне нужно удерживать lmb в течение определенного времени. Я пробовал это:

 mouse.press(Button.left) time.sleep(t) mouse.release(Button.left)  

Но по какой-то причине он нажимает на мышь один раз вместо того, чтобы удерживать ее в течение t нескольких секунд. Так есть ли способ сделать это? Если есть, я хотел бы увидеть реализацию.

Комментарии:

1. как я знаю, у мыши нет hold события, поэтому программы используют press и release проверяют, удерживает ли пользователь кнопку — и это означает, что это press только один раз. Может быть, лучше описать программу, для которой нужно удерживать мышь.

Ответ №1:

Этот код работает. Я написал короткую программу на C# , которая запускает таймер при наведении мыши вниз и прекращает отсчет при наведении мыши вверх. И это примерно соответствует количеству секунд, в течение которых Python спит.

Вот соответствующий код WinForms на C#. Все элементы, такие как Форма, Таймер и Метка, имеют только имена по умолчанию:

 private int x; private void Form1_MouseDown(object sender, MouseEventArgs e) {  x = 0;  timer1.Enabled = true; } private void timer1_Tick(object sender, EventArgs e) {  x  = 100;  label1.Text = x.ToString(); } private void Form1_MouseUp(object sender, MouseEventArgs e) {  timer1.Enabled = false; }  

Если это не работает, то используемая вами программа обрабатывает ввод по-другому, и вам нужно выяснить, как именно она обрабатывает ввод с помощью мыши.

Комментарии:

1. на самом деле вы правы, в моей программе просто были неправильные метки времени (или я так думаю).