1. 程式人生 > 程式設計 >python GUI庫圖形介面開發之PyQt5訪問系統剪下板QClipboard類詳細使用方法與例項

python GUI庫圖形介面開發之PyQt5訪問系統剪下板QClipboard類詳細使用方法與例項

PyQt5訪問系統剪下板QClipboard類介紹

QClipboard類提供了對系統剪下板的訪問,可以在應用程式之間複製和貼上資料,它的操作類似於QDrag類,,並使用類似的資料結構

QApplication類有一個靜態方法clipboard(),它的返回值對剪下板物件的引用,任何型別的MimeData都可以從剪下板複製或貼上

QClipboard類中的常用方法如表

方法 描述
clear() 清空剪下板的內容
setImage() 將QImage物件複製到剪下板中
setMimeData() 將MIME資料設定為剪下板
setPixmap() 從剪下板中複製Pixmap物件
setText() 從剪下板中複製文字
text() 從剪下板中檢索文字

QClipboard類中的常用訊號

訊號 含義
dataChanged 當剪下板內容發生變化時,這個訊號被髮射

QClipboard訪問系統剪下版的使用例項

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)

    #建立複製貼上按鈕,並新增快捷鍵
    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__),"E:\pyqt5快速開發與實戰\第四章\images\python.png")))

    #設定柵格佈局,並新增部件到相應的位置
    layout = QGridLayout()
    layout.addWidget(textCopyButton,0)
    layout.addWidget(imageCopyButton,1)
    layout.addWidget(htmlCopyButton,2)
    layout.addWidget(textPasteButton,1,0)
    layout.addWidget(imagePasteButton,1)
    layout.addWidget(htmlPasteButton,2)
    layout.addWidget(self.textLabel,2,2)
    layout.addWidget(self.imageLabel,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/python.png")))

  def pasteImage(self):
    #例項化剪下板,z設定影象標籤的圖片載入,從剪下板獲取路徑
    clipboard = QApplication.clipboard()
    self.imageLabel.setPixmap(clipboard.pixmap())

  def copyHtml(self):
    #例項化MimeData資料型別,設定型別Html的文字
    mimeData = QMimeData()
    mimeData.setHtml("Bold and <font color=red>Red</font>")
    #例項化剪下板,設定MimeData的初值文字
    clipboard = QApplication.clipboard()
    clipboard.setMimeData(mimeData)

  def pasteHtml(self):
    #例項化剪下板,,獲取MimeData的資料,並設定為標籤的文字值
    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 GUI庫圖形介面開發之PyQt5訪問系統剪下板QClipboard類詳細使用方法與例項

QClipboard程式碼分析

在這個例子中,有六個按鈕和2個標籤,需要例項化Clipboard物件,

可以將文字複製到Clipboard物件中

#例項化剪下板,標籤設定為剪下板的文字並顯示
clipboard = QApplication.clipboard()
self.textLabel.setText(clipboard.text())

也可以將圖片複製到剪下板物件中

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

本文主要講解了python PyQt5訪問系統剪下板QClipboard類詳細使用方法與例項,更多相關知識請檢視下面的相關連結