Найти в Дзене
programmer's notes (python and more)

Программирование на языке Python. PyQt5 и работа с буфером обмена с помощью QApplication.clipboard

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

QApplication.clipboard и работа с буфером обмена в pyqt5

Мы продолжаем тему с буфером обмена и одновременно наша статья будет иметь отношение к программированию с помощью PyQt5.

Для работы с буфером обмена в приложениях на основе библиотеки PyQt5 можно использовать механизм QApplication.clipboard().

Ниже представлена программы. При запуске появляется окно (см. Рисунок 1), где имеются два поля ввода (QLineEdit) и элемент QLabel. При наведении курсором мыши на поле ввода и щелчком правой кнопки появляется меню с пунктами: В буфер и Из буфера. Соответственно можно забрать содержимое поле в буфер обмена или выгрузить содержимое буфера обмена в поле ввода. При этом текстовое содержимое буфера обмена отображается в элементе QLabel, даже тогда, когда буфер обмена меняется другим приложением.

Часть программы: начало и класс главного окна. Текст всей программы см. ниже по ссылке
Часть программы: начало и класс главного окна. Текст всей программы см. ниже по ссылке

Часть программы: запуск и классы полей редактирования. Весь текст программы см. ниже по ссылке
Часть программы: запуск и классы полей редактирования. Весь текст программы см. ниже по ссылке
primer277.py

Пояснение к программе

  • Следует отметить, что при щелчке правой кнопкой мыши по элемент QLineEdit по умолчанию появляется стандартное меню. Поскольку я хотел сделать своё меню, я указал в программе QLineEdit.setContextMenuPolicy(Qt.CustomContextMenu), т.е. указывается, что меню будет создаваться программно.
  • С классом QApplication мы уже знакомы, мы используем его при создании приложений PyQt5. В данной программе используем метод QApplication.clipboard() для управления буфера обмена. В частности QApplication.clipboard().dataChanged.connect - соединяем сигнал об изменение содержимого буфера обмена с методом обработки.
  • Для получение текста из буфера обмена используется метод QApplication.clipboard().text(), для изменения содержимого буфера обмена метод QApplication.clipboard().setText().
  • В программе есть контекстное меню, которое мы создаём уже известным нам способом с помощью класса QMenu.
  • С помощью события focusInEvent() мы отслеживаем событие приобретение элементом окна фокуса. А флаг fc всегда показывает какой элемент является текущим.
Рисунок 1. Окно программы работы с буфером обмена.
Рисунок 1. Окно программы работы с буфером обмена.

Смотри также статью

Ну, пока всё!

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

Знаете, вставлять в буфер обмена это не так сложно
Знаете, вставлять в буфер обмена это не так сложно