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

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

本文是对《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

标签:python,复制,剪贴板
0
投稿

猜你喜欢

  • 详解python websocket获取实时数据的几种常见链接方式

    2023-09-20 08:22:23
  • Access数据库用另一种方式管理密码

    2008-10-13 12:25:00
  • python图像处理之反色实现方法

    2021-06-28 20:35:43
  • 详解基于webpack和vue.js搭建开发环境

    2024-04-30 10:40:15
  • python3.5绘制随机漫步图

    2022-08-12 14:16:13
  • 13个超酷的js显示时间效果

    2007-08-30 09:52:00
  • matlab读取串口数据并显示曲线的实现示例

    2022-12-17 15:56:17
  • 一个输入框提示列表效果

    2008-03-09 18:53:00
  • Python matplotlib底层原理解析

    2021-05-11 07:05:29
  • 从trim原型函数看js正则表达式的性能

    2008-12-11 13:55:00
  • 常用的9个JavaScript图表库详解

    2024-04-22 22:34:52
  • Go语言运行环境安装详细教程

    2024-05-29 22:07:51
  • ODBC连接数据库以SQLserver为例图文详解

    2024-01-13 04:07:43
  • Python与C/C++的相互调用案例

    2021-12-23 02:21:29
  • php生成随机数/生成随机字符串的方法小结【5种方法】

    2023-09-05 20:23:21
  • selenium+opencv实现滑块验证码的登陆

    2022-03-28 06:49:04
  • 通过Cursor工具使用GPT-4的方法详解

    2023-08-28 05:08:34
  • python 下载文件的几种方式分享

    2021-03-27 14:08:17
  • python调用新浪微博API项目实践

    2021-08-17 21:56:53
  • 解决MySQL数据库中与优化器有关的问题

    2008-12-17 16:18:00
  • asp之家 网络编程 m.aspxhome.com