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在命令行下使用google翻译(带语音)
Jan 16 Python
python中精确输出JSON浮点数的方法
Apr 18 Python
对Python新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
详细讲解用Python发送SMTP邮件的教程
Apr 29 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
Python操作MySQL模拟银行转账
Mar 12 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
python ssh 执行shell命令的示例
Sep 29 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
python通过opencv调用摄像头操作实例分析
Jun 07 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
给php新手谈谈我的学习心得
2007/02/25 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
js实现图片轮播效果学习笔记
2017/07/26 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
jupyter 添加不同内核的操作
2021/02/06 Python
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
VC++笔试题
2014/10/13 面试题
写好求职信第一句话的技巧
2013/10/26 职场文书
销售工作岗位职责
2013/12/24 职场文书
信访工作者先进事迹
2014/01/17 职场文书
社区重阳节活动总结
2015/03/24 职场文书
付款证明格式范文
2015/06/19 职场文书
MySQL8.0.18配置多主一从
2021/06/21 MySQL
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技
讲解MySQL增删改操作
2022/05/06 MySQL