Не удается выделить текст в pynput - PullRequest
0 голосов
/ 14 октября 2018

Я пишу скрипт на Python, используя библиотеку pynput, в которой я хочу выделить текст определенной длины.

Для этого я сначала нажимаю клавишу Shift, а затем несколько раз нажимаю клавишу со стрелкой влево.Так что текст, оставленный для идентификатора курсора, выбран и может быть далее использован для цели копирования.

Вот мой код:

from pynput import keyboard
from pynput.keyboard import Controller

keyboard_controller = Controller()
with keyboard_controller.pressed(keyboard.Key.shift_l):
    keyboard_controller.press(keyboard.Key.left)
    keyboard_controller.release(keyboard.Key.left)
    keyboard_controller.press(keyboard.Key.left)
    keyboard_controller.release(keyboard.Key.left)
    keyboard_controller.press(keyboard.Key.left)
    keyboard_controller.release(keyboard.Key.left)

Это перемещает мой курсор влево на 3 шага, но даже если нажата клавиша Shift, текст не выделяется.Что мне здесь не хватает?

Редактировать:

ОС: Windows 10

Среда: Python 3.6.5

Вотдемонстрация того, что происходит в моем коде против.enter image description here

Ответы [ 2 ]

0 голосов
/ 06 августа 2019

Я только что поиграл с pynput и pyautogui и, наконец, нашел комбинацию с использованием pynput, которая завершит эту функцию горячей клавиши shift.Я использовал page_down вместо клавиш со стрелками для моего кода, но я подтвердил, что оба работают.По какой-то причине, если вы нажмете клавиши Shift и Shift_r, вы сможете выделить текст, перемещая курсор.

Настройка:

from pynput.keyboard import Key, Controller

keyboard = Controller()

Код:

keyboard.press(Key.shift)
keyboard.press(Key.shift_r)
keyboard.press(Key.page_down)  # or keyboard.press(Key.left)
keyboard.release(Key.page_down)  # or keyboard.release(Key.left)
keyboard.release(Key.shift_r)
keyboard.release(Key.shift)
0 голосов
/ 14 октября 2018

Может быть попробовать это?

from pynput.keyboard import Key
from pynput.keyboard import Controller

keyboard = Controller()

Вариант 1:

with keyboard.pressed(Key.shift):
    keyboard.press(Key.left)
    keyboard.release(Key.left)
    keyboard.press(Key.left)
    keyboard.release(Key.left)

Вариант 2:

keyboard.press(Key.shift)
keyboard.press(Key.left)
keyboard.release(Key.left)
keyboard.press(Key.left)
keyboard.release(Key.left)
keyboard.release(Key.shift)

Вариант 3:

keyboard.press(Key.shift.value)
keyboard.press(Key.left.value)
keyboard.release(Key.left.value)
keyboard.press(Key.left.value)
keyboard.release(Key.left.value)
keyboard.release(Key.shift.value)

Вот видео доказательство того, что он работает на моей машине:)

enter image description here

...