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

发布时间 - 2026-01-10 22:46:51    点击率:

本文是对《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_()

运行结果:

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


# python  # 复制到剪贴板  # 剪贴板  # 操作剪贴板  # python两种获取剪贴板内容的方法  # 对python pandas读取剪贴板内容的方法详解  # python 3调用百度OCR API实现剪贴板文字识别  # python控制windows剪贴板  # 向剪贴板中写入图片的实例  # 使用wxPython获取系统剪贴板中的数据的教程  # python实现剪贴板的操作  # 三种  # 大同小异  # 大家多多  # textCopyButton  # parent  # super  # def  # QPushButton  # QLabel  # QGridLayout  # Form  # QPixmap  # QtGui  # amp  # htmlPasteButton  # HTML  # imageCopyButton  # imagePasteButton  # Image  # opy 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Mybatis 中的insertOrUpdate操作  Python文件异常处理策略_健壮性说明【指导】  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel怎么判断请求类型_Laravel Request isMethod用法  如何用景安虚拟主机手机版绑定域名建站?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  高端网站建设与定制开发一站式解决方案 中企动力  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Linux安全能力提升路径_长期防护思维说明【指导】  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  如何快速搭建高效香港服务器网站?  如何用已有域名快速搭建网站?  EditPlus中的正则表达式实战(5)  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  详解Huffman编码算法之Java实现  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel如何使用Livewire构建动态组件?(入门代码)  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  利用python获取某年中每个月的第一天和最后一天  Laravel如何创建自定义Facades?(详细步骤)  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  高性能网站服务器部署指南:稳定运行与安全配置优化方案  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  如何用美橙互联一键搭建多站合一网站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Firefox Developer Edition开发者版本入口  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  如何在搬瓦工VPS快速搭建网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Laravel如何升级到最新版本?(升级指南和步骤)  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何撰写建站申请书?关键要点有哪些?  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  如何在腾讯云免费申请建站?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel如何为API生成Swagger或OpenAPI文档  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  js代码实现下拉菜单【推荐】  如何用搬瓦工VPS快速搭建个人网站?  Python并发异常传播_错误处理解析【教程】  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  手机软键盘弹出时影响布局的解决方法  网站建设要注意的标准 促进网站用户好感度!