1 import sys 2 from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QTextBrowser, QPushButton, QGridLayout 3 4 class Demo(QWidget): 5 def __init__(self): 6 super(Demo, self).__init__() 7 self.text_edit = QTextEdit(self) 8 self.text_browser = QTextBrowser(self) 9 10 self.clipboard = QApplication.clipboard() # 实例化剪贴板 11 self.clipboard.dataChanged.connect(lambda: print('数据变化了'))#当数据发生变化时发出信号 12 13 self.copy_btn = QPushButton('复制', self) 14 self.copy_btn.clicked.connect(self.copy_func) 15 16 self.paste_btn = QPushButton('粘贴', self) 17 self.paste_btn.clicked.connect(self.paste_func) 18 19 self.g_layout = QGridLayout() 20 self.g_layout.addWidget(self.text_edit, 0, 0, 1, 1) 21 self.g_layout.addWidget(self.text_browser, 0, 1, 1, 1) 22 self.g_layout.addWidget(self.copy_btn, 1, 0, 1, 1) 23 self.g_layout.addWidget(self.paste_btn, 1, 1, 1, 1) 24 self.setLayout(self.g_layout) 25 26 def copy_func(self): 27 self.clipboard.setText(self.text_edit.toPlainText())#给剪贴板设置文本(纯文本) 28 29 def paste_func(self): 30 #方法一 31 self.text_browser.setText(self.clipboard.text()) 32 #self.clipboard.text() 返回剪贴板的文本 33 #方法二 34 mime = self.clipboard.mimeData() #返回剪贴板的mime数据。是对象 35 if mime.hasText(): 36 self.text_browser.setText(mime.text()) 37 # mime.text() 获取mime对象中的文本 38 39 if __name__ == '__main__': 40 app = QApplication(sys.argv) 41 demo = Demo() 42 demo.show() 43 sys.exit(app.exec_())
当然以上只是针对文本内容,当然还可以复制图片等文件,而剪贴板当然也有相应的方法,以下列出常用的:
方法 解释
clear() 清空剪贴板内容
mimeData() 获取剪贴板上的MIME类型数据
setMimeData() 将MIME类型数据放到剪贴板中
pixmap() 获取剪贴板上的QPixmap类型数据
setPixmap() 将QPixmap类型数据放到剪贴板中
image() 获取剪贴板上的QImage类型数据
setImage() 将QImage类型数据放到剪贴板中
text() 获取剪贴板上的文本
setText() 将文本放到剪贴板中
self.mime_data.setHtml(self.text_edit.textCursor().selection().toHtml()) 给MIME对象设置文本--带颜色格式的文本
self.clipboard.setMimeData(self.mime_data) 给剪贴板设置MIME数据