网络编程
位置:首页>> 网络编程>> Python编程>> python3+PyQt5实现使用剪贴板做复制与粘帖示例

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

作者:basisworker  发布时间:2023-02-14 05:37:10 

标签:python,复制,剪贴板

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


#!/usr/bin/env python3
import os
import sys
from PyQt5.QtCore import (QMimeData, Qt)
from PyQt5.QtWidgets import (QApplication, QDialog, QGridLayout, QLabel,
   QPushButton)
from PyQt5.QtGui import QPixmap

class 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_()

运行结果:

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

来源:http://blog.csdn.net/xiaoyangyang20/article/details/54706539

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com