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 相关文章推荐
python查找第k小元素代码分享
Dec 18 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
Python中断言Assertion的一些改进方案
Oct 27 Python
使用Python绘制图表大全总结
Feb 11 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
Python反射和内置方法重写操作详解
Aug 27 Python
python用post访问restful服务接口的方法
Dec 07 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
python代码实现猜拳小游戏
Nov 30 Python
python Pexpect模块的使用
Dec 25 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
基于Python 函数和方法的区别说明
Mar 24 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 object转数组示例
2014/01/15 PHP
php获取发送给用户的header信息的方法
2015/03/16 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
php实现Mysql简易操作类
2015/10/11 PHP
PHP7匿名类用法分析
2016/09/26 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
一篇不错的Python入门教程
2007/02/08 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
python内存动态分配过程详解
2019/07/15 Python
Python数学形态学实例分析
2019/09/06 Python
详解Python流程控制语句
2020/10/28 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
学校后勤人员职责
2013/12/27 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
2014年迎新年活动方案
2014/02/19 职场文书
保护水资源的标语
2014/06/17 职场文书
小学庆六一活动总结
2014/08/28 职场文书
教师自我剖析材料
2014/09/29 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
python开发制作好看的时钟效果
2022/05/02 Python