Как использовать буфер обмена — wxPython #32

Все, кто ежедневно использует компьютер, знает, можно копировать и вставлять текст. Но вот многие не знают, что когда они что-то копируют, то оно попадает в место, которое называется «Буфер обмена». Большинство программ используют данную технологию или её аналоги: это может быть буфер обмена для перемещения файлов внутри приложения, или системный буфер обмена, который позволяет копировать объекты из одного приложения в другое.

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

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Все, кто ежедневно использует компьютер, знает, можно копировать и вставлять текст. Но вот многие не знают, что когда они что-то копируют, то оно попадает в место, которое называется «Буфер обмена». Большинство программ используют данную технологию или её аналоги: это может быть буфер обмена для перемещения файлов внутри приложения, или системный буфер обмена, который позволяет копировать объекты из одного приложения в другое.

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

Как использовать буфер обмена - wxPython #32

Мы научимся пользоваться буфером обмена на одном простом примере. Код, который вы найдёте ниже, содержит две кнопки, одна из которых копирует любой текст, находящийся в текстовом поле, и который вы можете вставить куда угодно, например, в строку текста, поисковик или ещё-куда.

Вторая также копирует текст в буфер обмена, но делает его доступным даже после того, как вы закроете само приложение. Таким образом данные должны быть доступны из системного буфера обмена. Обе кнопки отлично работают на Windows, но wxGTK (например, версия для Linux) не будет работать во втором случае. Вы можете изучить тему о баге, чтобы узнать почему так происходит.

Как бы то ни было, давайте взглянем на код!

Как вы могли уже догадаться, фишка скрипта в кнопках хэндлеров событий. Главным фрагментом является wx.TextDataObject, который сохранит данные из текстового контроля. Затем мы пытаемся открыть буфер обмена. Если нам это удалось, то мы добавляем наш текст в буфер обмена и затем его закрываем.

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

Примечание: Метод копирования и стирания может не работать на всех операционных системах. Например, у меня он работает на Windows 7, но не запускается на Xubuntu 14.04.

Итоги

Буфер обмена – очень удобная вещь, и я использую его практически беспрерывно всегда, когда нахожусь за компьютером. Так что невозможность его использования может очень сильно разочаровать конечного пользователя. К счастью, с помощью wxPython довольно просто сделать собственное приложение, поддерживающее буфер обмена. Так что теперь вы знаете как предотвратить недоумение, вызванное отсутствием буфера обмена у ваших пользователей.