首页 > 编程 > Python > 正文

python3+PyQt5实现使用剪贴板做复制与粘帖示例

2019-11-25 16:22:57
字体:
来源:转载
供稿:网友

本文是对《Python Qt GUI快速编程》的第10章的例子剪贴板用Python3+PyQt5进行改写,分别对文本,图片和html文本的复制与粘帖,三种做法大同小异。

#!/usr/bin/env python3import osimport sysfrom PyQt5.QtCore import (QMimeData, Qt)from PyQt5.QtWidgets import (QApplication, QDialog, QGridLayout, QLabel,    QPushButton)from PyQt5.QtGui import QPixmapclass Form(QDialog):  def __init__(self, parent=None):    super(Form, self).__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")    self.textLabel = QLabel("Original text")    self.imageLabel = QLabel()    self.imageLabel.setPixmap(QPixmap(os.path.join(        os.path.dirname(__file__), "images/clock.png")))    layout = QGridLayout()    layout.addWidget(textCopyButton, 0, 0)    layout.addWidget(imageCopyButton, 0, 1)    layout.addWidget(htmlCopyButton, 0, 2)    layout.addWidget(textPasteButton, 1, 0)    layout.addWidget(imagePasteButton, 1, 1)    layout.addWidget(htmlPasteButton, 1, 2)    layout.addWidget(self.textLabel, 2, 0, 1, 2)    layout.addWidget(self.imageLabel, 2, 2)    self.setLayout(layout)    textCopyButton.clicked.connect(self.copyText)    textPasteButton.clicked.connect(self.pasteText)    htmlCopyButton.clicked.connect(self.copyHtml)    htmlPasteButton.clicked.connect(self.pasteHtml)    imageCopyButton.clicked.connect(self.copyImage)    imagePasteButton.clicked.connect(self.pasteImage)    self.setWindowTitle("Clipboard")  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(os.path.join(        os.path.dirname(__file__), "images/gvim.png")))  def pasteImage(self):    clipboard = QApplication.clipboard()    self.imageLabel.setPixmap(clipboard.pixmap())  def copyHtml(self):    mimeData = QMimeData()    mimeData.setHtml("<b>Bold and <font color=red>Red</font></b>")    clipboard = QApplication.clipboard()    clipboard.setMimeData(mimeData)  def pasteHtml(self):    clipboard = QApplication.clipboard()    mimeData = clipboard.mimeData()    if mimeData.hasHtml():      self.textLabel.setText(mimeData.html())if __name__ == "__main__":  app = QApplication(sys.argv)  form = Form()  form.show()  app.exec_()

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表