Чтение выбранного текста в функцию Python без изменения буфера обмена, даже без изменения мульти буфера обмена - PullRequest
2 голосов
/ 02 июня 2019

Я хочу выделить текст с помощью мыши или клавиатуры, изменить его с помощью функции Python (например, заменить слово другим словом), а затем вставить измененный текст.Я хочу сделать это без изменения того, что находится в буфере обмена.Я не доволен, чтобы сохранить только то, что находится в первом слоте буфера обмена;Я хочу сохранить то, что есть на каждом слоте буфера обмена или, по крайней мере, на первых, например, на 50 слотов.Мой вопрос, как это сделать?

Мне интересно сделать это в Windows с Python.

Справочная информация: Windows недавно представила собственный мульти-буфер обмена (т.е. буфер с несколькими слотами), доступ к которому можно получить, нажав Windows-v ( см. здесь ), а также существуют сторонние приложения, такие как Copyq и Ditto, которые предоставляют мульти-буфер обмена.Когда вы копируете что-то в мульти-буфер обмена Windows, то скопированное вами изображение помещается в первый слот, а все остальное уменьшается на один слот.Решение, которое использует мульти-буфер обмена Windows, а не стороннее приложение, было бы предпочтительным, но не обязательным.Pyperclip - это популярный инструмент для чтения текста в функции Python из буфера обмена и передачи текста обратно в буфер обмена из функций Python.Однако Pyperclip может взаимодействовать только с первым слотом в буфере обмена.

Мой текущий подход: 1) сохранить предыдущее содержимое буфера обмена во временной переменной, 2) скопировать выбранный текст вбуфер обмена, 3) передать скопированный выделенный текст в функцию Python через Pyperclip, 4) изменить текст с помощью функции Python, 5) поместить измененный текст обратно в буфер обмена с помощью Pyperclip, 5) вставить измененный текст, 6) и, наконец,положить исходный контент буфера обмена обратно в буфер обмена (используя временную переменную).Но этот подход недостаточно хорош, потому что он изменяет то, что находится в верхних слотах буфера обмена, например, во втором слоте.В частности, он добавляет что-то в буфер обмена, смещая все остальное вниз.

Есть ли способ программно удалить посторонний контент из мульти-буфера обмена, как только я закончу с ним?Например, как только я передам выделенный текст из буфера обмена в функцию Python (где им будут манипулировать), я бы хотел использовать функцию Python для удаления выделенного текста из буфера обмена, поскольку он там больше не нужен.(Я знаю, что вы можете удалить текст из буфера обмена с помощью графического интерфейса, но я хочу сделать это с помощью функции Python.) В качестве альтернативы, если есть способ прочитать выбранный текст в функцию Python (и вставить его обратно) безположить его на любой слот мульти-буфера обмена, который тоже будет работать.

Спасибо

...