python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例


Posted in Python onFebruary 27, 2020

PyQt5访问系统剪切板QClipboard类介绍

QClipboard类提供了对系统剪切板的访问,可以在应用程序之间复制和粘贴数据,它的操作类似于QDrag类,,并使用类似的数据结构

QApplication类有一个静态方法clipboard(),它的返回值对剪切板对象的引用,任何类型的MimeData都可以从剪切板复制或粘贴

QClipboard类中的常用方法如表

方法 描述
clear() 清空剪切板的内容
setImage() 将QImage对象复制到剪切板中
setMimeData() 将MIME数据设置为剪切板
setPixmap() 从剪切板中复制Pixmap对象
setText() 从剪切板中复制文本
text() 从剪切板中检索文本

QClipboard类中的常用信号

信号 含义
dataChanged 当剪切板内容发生变化时,这个信号被发射

QClipboard访问系统剪切版的使用实例

import os
import sys
from PyQt5.QtCore import QMimeData
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__), "E:\pyqt5快速开发与实战\第四章\images\python.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/python.png")))

  def pasteImage(self):
    #实例化剪切板,z设置图像标签的图片加载,从剪切板获取路径
    clipboard = QApplication.clipboard()
    self.imageLabel.setPixmap(clipboard.pixmap())

  def copyHtml(self):
    #实例化MimeData数据类型,设置类型Html的文本
    mimeData = QMimeData()
    mimeData.setHtml("<b>Bold and <font color=red>Red</font></b>")
    #实例化剪切板,设置MimeData的初值文本
    clipboard = QApplication.clipboard()
    clipboard.setMimeData(mimeData)

  def pasteHtml(self):
    #实例化剪切板,,获取MimeData的数据,并设置为标签的文本值
    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()
  sys.exit(app.exec_())

效果图如下

python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例

QClipboard代码分析

在这个例子中,有六个按钮和2个标签,需要实例化Clipboard对象,

可以将文本复制到Clipboard对象中

#实例化剪切板,标签设置为剪切板的文本并显示
clipboard = QApplication.clipboard()
self.textLabel.setText(clipboard.text())

也可以将图片复制到剪切板对象中

clipboard = QApplication.clipboard()
self.imageLabel.setPixmap(clipboard.pixmap())

本文主要讲解了python PyQt5访问系统剪切板QClipboard类详细使用方法与实例,更多相关知识请查看下面的相关链接

Python 相关文章推荐
python学习之第三方包安装方法(两种方法)
Jul 30 Python
windows下python连接oracle数据库
Jun 07 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
python读取xlsx的方法
Dec 25 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
python爬虫添加请求头代码实例
Dec 28 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
Python如何读取、写入CSV数据
Jul 28 Python
ASP.NET Core中的配置详解
Feb 05 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 #Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 #Python
python列表切片和嵌套列表取值操作详解
Feb 27 #Python
Python递归实现打印多重列表代码
Feb 27 #Python
Python各种扩展名区别点整理
Feb 27 #Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 #Python
python程序文件扩展名知识点详解
Feb 27 #Python
You might like
关于PHP5 Session生命周期介绍
2010/03/02 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
PHP 图片处理
2020/09/16 PHP
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
解读Django框架中的低层次缓存API
2015/07/24 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
200行python代码实现2048游戏
2019/07/17 Python
python解析yaml文件过程详解
2019/08/30 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
Python ini文件常用操作方法解析
2020/04/26 Python
了解一下python内建模块collections
2020/09/07 Python
Python之Sklearn使用入门教程
2021/02/19 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
介绍下static、final、abstract区别
2015/01/30 面试题
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
2014年终工作总结范本
2014/12/15 职场文书
工会经费申请报告
2015/05/15 职场文书
如何利用golang运用mysql数据库
2022/03/13 Golang