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 相关文章推荐
利用soaplib搭建webservice详细步骤和实例代码
Nov 20 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
详解python里使用正则表达式的全匹配功能
Oct 19 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
详解django三种文件下载方式
Apr 06 Python
python里 super类的工作原理详解
Jun 19 Python
Python中的类与类型示例详解
Jul 10 Python
python中class的定义及使用教程
Sep 18 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
Oct 09 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
详解字符串在Python内部是如何省内存的
Feb 03 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
生成sessionid和随机密码的例子
2006/10/09 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
javascript Object与Function使用
2010/01/11 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
AngularJS实现表单验证功能详解
2017/10/12 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
波兰在线运动商店:YesSport
2020/07/23 全球购物
Linux面试题LINUX系统类
2015/11/25 面试题
励志演讲稿范文
2014/04/29 职场文书
质量负责人任命书
2014/06/06 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
python使用glob检索文件的操作
2021/05/20 Python
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript