Взаимодействие с выделенным текстом в Python - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу создать простое приложение на Python, которое будет взаимодействовать с текущим выделенным текстом и делать с ним некоторые вещи, когда пользователь нажимает сочетание клавиш.Очевидный способ сделать это - скопировать текст в буфер обмена, используя pyautogui.hotkey("ctrl", "c"), а затем взаимодействовать с ним.Проблема в том, что этот метод перезаписывает все, что пользователь в данный момент имеет в своем буфере обмена.

Единственный обходной путь, о котором я мог подумать, это что-то вроде:

#make a backup of current clipboard contents
tmpClipboard = pyperclip.paste()

#copy selected text and store it
pyautogui.hotkey("ctrl", "c")
selectedText = pyperclip.paste()

#copy old clipboard contents back inside
pyperclip.copy(tmpClipboard)

#process selected text
doStuff(selectedText)

Что былучший способ справиться с этим (поскольку я не уверен, насколько хорошо это будет работать, когда у пользователя есть, скажем, изображение в буфере обмена вместо обычного текста)?

1 Ответ

1 голос
/ 02 апреля 2019

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

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

Что касается изображений и т. Д. Если вы все еще хотите использовать буфер обмена, вы можете указать тип данных.Тем не менее, он имеет действительно огромное количество возможных значений, и он кажется очень громоздким и неэффективным.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...