import os
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class demoQClipboard(QDialog):
def __init__(self):
super(demoQClipboard, self).__init__()
#创建对象
txtCopyButton = QPushButton('&Copy Text')
txtPasteButton = QPushButton('Paste &Text')
htmlCopyButton = QPushButton('C&opy HTML')
htmlPasteButton = QPushButton('Paste &HTML')
imageCopyButton = QPushButton('Co&py Image')
imagePasteButton = QPushButton('Paste &Image')
self.txtLbl = QLabel()
self.picLbl = QLabel()
self.picLbl.setPixmap(QPixmap(os.path.join(os.path.dirname(__file__), './pic.jpg')))
self.setWindowTitle('0431QClipboard')
#布局代码
layout = QGridLayout()
layout.addWidget(txtCopyButton, 0, 0)
layout.addWidget(imageCopyButton, 0, 1)
layout.addWidget(htmlCopyButton, 0, 2)
layout.addWidget(txtPasteButton, 1, 0)
layout.addWidget(imagePasteButton, 1, 1)
layout.addWidget(htmlPasteButton, 1, 2)
# QGridLayout.addWidget(widget, row, column, 占多少行, 占多少列)
layout.addWidget(self.txtLbl, 2, 0, 1, 2)
layout.addWidget(self.picLbl, 2, 2)
self.setLayout(layout)
#建立信号与槽
txtCopyButton.clicked.connect(self.copyTxt)
txtPasteButton.clicked.connect(self.pasteTxt)
htmlCopyButton.clicked.connect(self.copyHtml)
htmlPasteButton.clicked.connect(self.pasteHtml)
imageCopyButton.clicked.connect(self.copyPic)
imagePasteButton.clicked.connect(self.pastePic)
def copyTxt(self):
#新建一个剪切板对象
cp = QApplication.clipboard()
#给剪切板输入内容
cp.setText('I have been clipped')
def pasteTxt(self):
cp = QApplication.clipboard()
#从剪切板取得内容,然后填入label对象
self.txtLbl.setText(cp.text())
def copyPic(self):
cp = QApplication.clipboard()
cp.setPixmap(QPixmap(os.path.join(os.path.dirname(__file__), './tpic.jpg')))
def pastePic(self):
cp = QApplication.clipboard()
self.picLbl.setPixmap(cp.pixmap())
def copyHtml(self):
mimeData = QMimeData()
mimeData.setHtml("<b>Bold and <font color=red>red</font></b>")
cp = QApplication.clipboard()
cp.setMimeData(mimeData)
def pasteHtml(self):
cp = QApplication.clipboard()
mimeData = cp.mimeData()
if mimeData.hasHtml():
self.txtLbl.setText(mimeData.html())
if __name__ == '__main__':
app = QApplication(sys.argv)
win = demoQClipboard()
win.show()
sys.exit(app.exec_())