简介
QClipboard类提供了对系统剪贴板的访问,可以在应用程序之间复制和粘贴数据。
QApplication类有一个静态方法clipboard(),它返回对剪贴板对象的引用。任何类型的MineData都可以从剪贴板复制和粘贴。
QClipboard类中常用的方法
文字
图像
HTML
程序
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
"""
复制文字
复制图像
复制HTML
"""
class QClipboardDemo(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
# 复制粘贴按钮
textCopyButton = QPushButton("&Copy Text")
textPasteButton = QPushButton("Paste &Text")
htmlCopyButton = QPushButton("C&opy HTML")
htmlPasteButton = QPushButton("Paste &HTML")
imageCopyButton = QPushButton("Co&py Image")
imagePasteButton = QPushButton("Paste &Image")
# 复制粘贴按钮事件处理
textCopyButton.clicked.connect(self.copyText)
textPasteButton.clicked.connect(self.pasteText)
imageCopyButton.clicked.connect(self.copyImage)
imagePasteButton.clicked.connect(self.pasteImage)
htmlCopyButton.clicked.connect(self.copyHtml)
htmlPasteButton.clicked.connect(self.pasteHtml)
# 文本标签
self.textLabel = QLabel("Original text")
# 图片标签
self.imageLabel = QLabel()
self.imageLabel.setPixmap(QPixmap("D:/pyqt5/img/user.jpg"))
# 栅格布局
gLayout = QGridLayout()
gLayout.addWidget(textCopyButton, 0, 0)
gLayout.addWidget(imageCopyButton, 0, 1)
gLayout.addWidget(htmlCopyButton, 0, 2)
gLayout.addWidget(textPasteButton, 1, 0)
gLayout.addWidget(imagePasteButton, 1, 1)
gLayout.addWidget(htmlPasteButton, 1, 2)
gLayout.addWidget(self.textLabel, 2, 0, 1, 2)
gLayout.addWidget(self.imageLabel, 2, 2)
# 设置布局
self.setLayout(gLayout)
def copyText(self):
clipboard = QApplication.clipboard()
clipboard.setText("I've been clipped")
def pasteText(self):
clipboard = QApplication.clipboard()
self.textLabel.setText(clipboard.text())
def copyImage(self):
clipboard = QApplication.clipboard()
clipboard.setPixmap(QPixmap("D:/pyqt5/img/0808.jpg"))
def pasteImage(self):
clipboard = QApplication.clipboard()
self.imageLabel.setPixmap(clipboard.pixmap())
def copyHtml(self):
mimeData = QMimeData()
mimeData.setHtml("<a href='www.baidu.com'>baidu</a>")
clipboard = QApplication.clipboard()
clipboard.setMimeData(mimeData)
def pasteHtml(self):
clipboard = QApplication.clipboard()
mimeData = clipboard.mimeData()
if mimeData.hasHtml():
self.textLabel.setOpenExternalLinks(True)
self.textLabel.setText(mimeData.html())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = QClipboardDemo()
window.show()
sys.exit(app.exec_())
结果截图