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


Posted in Python onJanuary 24, 2017

本文是对《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实现使用剪贴板做复制与粘帖示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
windows下wxPython开发环境安装与配置方法
Jun 28 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
Zabbix实现微信报警功能
Oct 09 Python
Python numpy中矩阵的基本用法汇总
Feb 12 Python
python读取ini配置文件过程示范
Dec 23 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
Pyspark获取并处理RDD数据代码实例
Mar 27 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
Jul 01 Python
python实现数字炸弹游戏
Jul 17 Python
Python调用C++程序的方法详解
Jan 24 #Python
python中import学习备忘笔记
Jan 24 #Python
用python实现简单EXCEL数据统计的实例
Jan 24 #Python
Python如何import文件夹下的文件(实现方法)
Jan 24 #Python
利用Python脚本实现ping百度和google的方法
Jan 24 #Python
解决python2.7用pip安装包时出现错误的问题
Jan 23 #Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 #Python
You might like
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
smarty缓存用法分析
2014/12/16 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
PHP如何使用Memcached
2016/04/05 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
js活用事件触发对象动作
2008/08/10 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
电气技术员岗位职责
2013/11/19 职场文书
玄武湖导游词
2015/02/05 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript