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 相关文章推荐
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
简单掌握Python中glob模块查找文件路径的用法
Jul 05 Python
Django中ORM表的创建和增删改查方法示例
Nov 15 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
Python脚本去除文件的只读性操作
Mar 05 Python
python模块如何查看
Jun 16 Python
浅析Python __name__ 是什么
Jul 07 Python
python爬虫scrapy基本使用超详细教程
Feb 20 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
php2html php生成静态页函数
2008/12/08 PHP
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
基于header的一些常用指令详解
2013/06/06 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
php正则修正符用法实例详解
2016/12/29 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
python中元类用法实例
2014/10/10 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
毕业证丢失证明范本
2014/09/20 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
2016入党心得体会范文
2016/01/06 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书