PyQt5 - QClipboard
В QClipboardКласс обеспечивает доступ к общесистемному буферу обмена, который предлагает простой механизм для копирования и вставки данных между приложениями. Его действие похоже наQDrag class и использует похожие типы данных.
Класс QApplication имеет статический метод clipboard()который возвращает ссылку на объект буфера обмена. Любой тип MimeData можно скопировать в буфер обмена или вставить из него.
Ниже приведены методы класса буфера обмена, которые обычно используются.
Sr.No. | Методы и описание |
---|---|
1 |
clear() Очищает содержимое буфера обмена |
2 |
setImage() Копирует QImage в буфер обмена |
3 |
setMimeData() Устанавливает данные MIME в буфер обмена |
4 |
setPixmap() Копирует объект Pixmap в буфер обмена |
5 |
setText() Копирует QString в буфер обмена |
6 |
text() Извлекает текст из буфера обмена |
Сигнал, связанный с объектом буфера обмена -
Sr.No. | Метод и описание |
---|---|
1 |
dataChanged() При изменении данных буфера обмена |
пример
В следующем примере два объекта TextEdit и две кнопки добавляются в окно верхнего уровня.
Для начала создается объект буфера обмена. Метод Copy () объекта textedit копирует данные в системный буфер обмена. При нажатии кнопки «Вставить» данные из буфера обмена выбираются и вставляются в другой объект текстового сообщения.
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
hbox = QVBoxLayout()
self.edit1=QTextEdit()
hbox.addWidget(self.edit1)
self.btn1=QPushButton("Copy")
hbox.addWidget(self.btn1)
self.edit2=QTextEdit()
self.btn2=QPushButton("Paste")
hbox.addWidget(self.edit2)
hbox.addWidget(self.btn2)
self.btn1.clicked.connect(self.copytext)
self.btn2.clicked.connect(self.pastetext)
self.setLayout(hbox)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Clipboard')
self.show()
def copytext(self):
#clipboard.setText(self.edit1.copy())
self.edit1.copy()
print (clipboard.text())
msg=QMessageBox()
msg.setText(clipboard.text()+" copied on clipboard")
msg.exec_()
def pastetext(self):
self.edit2.setText(clipboard.text())
app = QApplication(sys.argv)
clipboard=app.clipboard()
ex = Example()
ex.setWindowTitle("clipboard Example")
sys.exit(app.exec_())
Приведенный выше код дает следующий вывод -