溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在python中使用QClipboard類

發(fā)布時間:2021-03-20 16:30:44 來源:億速云 閱讀:207 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)如何在python中使用QClipboard類,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

PyQt5訪問系統(tǒng)剪切板QClipboard類介紹

QClipboard類提供了對系統(tǒng)剪切板的訪問,可以在應(yīng)用程序之間復(fù)制和粘貼數(shù)據(jù),它的操作類似于QDrag類,,并使用類似的數(shù)據(jù)結(jié)構(gòu)

QApplication類有一個靜態(tài)方法clipboard(),它的返回值對剪切板對象的引用,任何類型的MimeData都可以從剪切板復(fù)制或粘貼

QClipboard類中的常用方法如表

方法描述
clear()清空剪切板的內(nèi)容
setImage()將QImage對象復(fù)制到剪切板中
setMimeData()將MIME數(shù)據(jù)設(shè)置為剪切板
setPixmap()從剪切板中復(fù)制Pixmap對象
setText()從剪切板中復(fù)制文本
text()從剪切板中檢索文本

QClipboard類中的常用信號

信號含義
dataChanged當(dāng)剪切板內(nèi)容發(fā)生變化時,這個信號被發(fā)射

QClipboard訪問系統(tǒng)剪切版的使用實(shí)例

import os
import sys
from PyQt5.QtCore import QMimeData
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)

    #創(chuàng)建復(fù)制粘貼按鈕,并添加快捷鍵
    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")

    #創(chuàng)建文本標(biāo)簽和圖像標(biāo)簽,顯示文本和圖像
    self.textLabel = QLabel("Original text")
    self.imageLabel = QLabel()
    self.imageLabel.setPixmap(QPixmap(os.path.join(
      os.path.dirname(__file__), "E:\pyqt5快速開發(fā)與實(shí)戰(zhàn)\第四章\images\python.png")))

    #設(shè)置柵格布局,并添加部件到相應(yīng)的位置
    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)

    #設(shè)置主窗口的布局,自定義槽函數(shù),設(shè)置標(biāo)題
    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):
    #實(shí)例化剪切板,設(shè)置剪切板的文本
    clipboard = QApplication.clipboard()
    clipboard.setText("I've been clipped!")

  def pasteText(self):
    #實(shí)例化剪切板,標(biāo)簽設(shè)置為剪切板的文本并顯示
    clipboard = QApplication.clipboard()
    self.textLabel.setText(clipboard.text())

  def copyImage(self):
    #實(shí)例化剪切板,設(shè)置剪切板加載的圖想路徑
    clipboard = QApplication.clipboard()
    clipboard.setPixmap(QPixmap(os.path.join(
      os.path.dirname(__file__), "./images/python.png")))

  def pasteImage(self):
    #實(shí)例化剪切板,z設(shè)置圖像標(biāo)簽的圖片加載,從剪切板獲取路徑
    clipboard = QApplication.clipboard()
    self.imageLabel.setPixmap(clipboard.pixmap())

  def copyHtml(self):
    #實(shí)例化MimeData數(shù)據(jù)類型,設(shè)置類型Html的文本
    mimeData = QMimeData()
    mimeData.setHtml("<b>Bold and <font color=red>Red</font></b>")
    #實(shí)例化剪切板,設(shè)置MimeData的初值文本
    clipboard = QApplication.clipboard()
    clipboard.setMimeData(mimeData)

  def pasteHtml(self):
    #實(shí)例化剪切板,,獲取MimeData的數(shù)據(jù),并設(shè)置為標(biāo)簽的文本值
    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()
  sys.exit(app.exec_())

效果圖如下

如何在python中使用QClipboard類

QClipboard代碼分析

在這個例子中,有六個按鈕和2個標(biāo)簽,需要實(shí)例化Clipboard對象,

可以將文本復(fù)制到Clipboard對象中

#實(shí)例化剪切板,標(biāo)簽設(shè)置為剪切板的文本并顯示
clipboard = QApplication.clipboard()
self.textLabel.setText(clipboard.text())

也可以將圖片復(fù)制到剪切板對象中

clipboard = QApplication.clipboard()
self.imageLabel.setPixmap(clipboard.pixmap())

看完上述內(nèi)容,你們對如何在python中使用QClipboard類有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI