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

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

运行结果:

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

(0)

相关推荐

  • 关于python pyqt5安装失败问题的解决方法

    前言 最近在工作中遇到一个问题,python pyqt5在安装的时候居然提示失败了,无奈只能找解决的办法,发现网上有同样遇到这个问题的同学,所以就总结了解决的方法分享出来,下面话不多说了,来一起看看详细的介绍: 发现问题 以前装命令都是pip一条命令搞定,会自动安装依赖的库,但在安装pyqt5时却遇到了问题 在下载完pyqt5时,会提示找不到合适的SIP版本 Could not find a version that satisfies the requirement sip>=4.19 (fr

  • python中pygame针对游戏窗口的显示方法实例分析(附源码)

    本文实例讲述了python中pygame针对游戏窗口的显示方法.分享给大家供大家参考,具体如下: 在这篇教程中,我将给出一个demo演示: 当我们按下键盘的'f'键的时候,演示的窗口会切换到全屏显示和默认显示两种显示模式 并且在后台我们可以看到相关的信息输出: 上面给出了一个简单的例子,当然在pygame的官方文档中有对显示策略的更权威的说明: http://www.pygame.org/docs/ref/display.html#pygame.display.set_mode ''' pyga

  • wxPython窗口的继承机制实例分析

    本文实例讲述了wxPython窗口的继承机制,分享给大家供大家参考.具体分析如下: 示例代码如下: import wx class MyApp(wx.App): def OnInit(self): self.frame = MyFrame(None, title = "My Main Frame jb51.net") self.SetTopWindow(self.frame) self.frame.Show() return True class MyFrame(wx.Frame):

  • python实现的简单窗口倒计时界面实例

    本文实例讲述了python实现的简单窗口倒计时界面.分享给大家供大家参考.具体分析如下: 下面的代码通过Tkinter制作windows窗口界面,然后时间了一个简单的倒计时功能,代码可以直接运行 # Countdown using Tkinter from Tkinter import * import time import tkMessageBox class App: def __init__(self,master): frame = Frame(master) frame.pack()

  • Python PyQt5标准对话框用法示例

    本文实例讲述了Python PyQt5标准对话框用法.分享给大家供大家参考,具体如下: 很全的Qt的标准对话框,包含QInputDialog.QColorDialog.QFontDialog.QMessageBox.QOpenFileDialog... 全部是由官网的C++版本,转换成PyQt5版本. 有些细节忽略了,因为实在不知怎么转换过来.捣鼓了一晚上,总算完成了,好累啊,不过很开心! 效果图: 完整代码: # -*- coding: utf-8 -*- from PyQt5.QtGui i

  • Python PyQt5实现的简易计算器功能示例

    本文实例讲述了Python PyQt5实现的简易计算器功能.分享给大家供大家参考,具体如下: 这里剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它 [知识点] 1.利用循环添加按钮部件,及给每个按钮设置信号/槽 2.给按钮设置固定大小:button.setFixedSize(QtCore.QSize(60,30)) 3.取事件的的发送者(此例为各个按钮)的文本: self.sender().text() [效果图] [源代码] import sys from PyQt

  • python在windows下创建隐藏窗口子进程的方法

    本文实例讲述了python在windows下创建隐藏窗口子进程的方法.分享给大家供大家参考.具体实现方法如下: import subprocess IS_WIN32 = 'win32' in str(sys.platform).lower() def subprocess_call(*args, **kwargs): #also works for Popen. #It creates a new *hidden* window, #so it will work in frozen apps

  • Python tkinter模块弹出窗口及传值回到主窗口操作详解

    本文实例讲述了Python tkinter模块弹出窗口及传值回到主窗口操作.分享给大家供大家参考,具体如下: 有些时候,我们需要使用弹出窗口,对程序的运行参数进行设置.有两种选择 一.标准窗口 如果只对一个参数进行设置(或者说从弹出窗口取回一个值),那么可以使用simpledialog,导入方法: from tkinter.simpledialog import askstring, askinteger, askfloat 完整例子 import tkinter as tk from tkin

  • python3.5 + PyQt5 +Eric6 实现的一个计算器代码

    目前可以实现简单的计算.计算前请重置,设计的时候默认数字是0,学了半天就做出来个这么个结果,bug不少. python3.5 + PyQt5 +Eric6 在windows7 32位系统可以完美运行 计算器,简单学了半天就画个图实现的存在bug,部分按钮还未实现,后续优化. 代码结构如图: jisuan.py import re #匹配整数或小数的乘除法,包括了开头存在减号的情况 mul_div=re.compile("(-?\d+)(\.\d+)?(\*|/)(-?\d+)(\.\d+)?&q

  • python 创建弹出式菜单的实现代码

    python 创建弹出式菜单的实现代码            实现效果图: Python代码  import win32ui import win32api from win32con import * from pywin.mfc import window class MyWnd(window.Wnd): def __init__ (self): window.Wnd.__init__(self,win32ui.CreateWnd()) self._obj_.CreateWindowEx(W

随机推荐