久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

實(shí)戰(zhàn)PyQt5: 101

 大傻子的文淵閣 2023-02-06 發(fā)布于浙江

應(yīng)用之間交換數(shù)據(jù)除了可以使用拖放技術(shù)外,還可使用剪貼板,。一個應(yīng)用把數(shù)據(jù)放到剪貼板,,另一個應(yīng)用從剪貼板中提出數(shù)據(jù)。

QClipboard簡介

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

獲取對全局剪貼板對象的引用,,可使用QAppiication類的靜態(tài)方法:
clipboard = QAppiication.clipboard()

任何類型的MimeData都可以從剪切板復(fù)制或粘貼。

QClipboard類的常用方法:

clipboard.setImage (QtGui.QImage ("image.jpg"))
  • image (): 返回一個QImage對象
  • <>類圖像放置到剪貼板,。如:map): 將QPixmap(img : QPixmaptPixi>se
clipboard.setPixmap (QtGui.QPixmap ("image, jpg"))
  • pixmap(): 返回一個QImage對象。
  • <>
  • clear(): 清空剪貼板數(shù)據(jù),。
  • mimeData() : 返回一個QMimeData對象,。
  • tMimeData(data :QMimeData): 將MimeData類型數(shù)據(jù)放置到剪貼板。QMimeData 類可以存放任意類型的數(shù)據(jù),。i>se

QClipboard類中的常用信號:

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

測試QClipboard

測試代碼中測試復(fù)制普通文本,,HTML文本和圖像三種方式,,粘貼使用QMimeData進(jìn)行格式判斷,輸出相應(yīng)信息,,因此粘貼功能也支持從其他應(yīng)用中的數(shù)據(jù)拷貝粘貼操作,,比如從notepad記事本中復(fù)制文本或者從mspaint繪圖板中復(fù)制圖像粘貼到窗口中,。完整代碼如下:

import sys,os
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt, QMimeData
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import (QApplication, QMainWindow, QFrame, QLabel,
                             QMenuBar, QMenu, QAction)
 
class DemoClipboard(QMainWindow):
    def __init__(self, parent=None):
        super(DemoClipboard, self).__init__(parent)   
        
         # 設(shè)置窗口標(biāo)題
        self.setWindowTitle('實(shí)戰(zhàn)PyQt5: QClipBoard 剪貼板演示')      
        # 設(shè)置窗口大小
        self.resize(400, 300)
      
        self.initUi()
        
        self.clipType=''
        
    def initUi(self):
        self.initMenu()
        
        self.showBox = QLabel()
        self.showBox.setFrameShape(QFrame.Box)
        self.showBox.setLineWidth(1)
        self.showBox.setAlignment(Qt.AlignCenter)
        
        self.setCentralWidget(self.showBox)
        
    def initMenu(self):
        mBar = self.menuBar()
        
        #文件菜單
        menuFile = mBar.addMenu('文件')
        #退出
        aExit = QAction('退出', self)
        aExit.triggered.connect(self.close)
        menuFile.addAction(aExit)
        
        #編輯菜單
        menuEdit = mBar.addMenu('編輯')
        aCopyText = QAction('復(fù)制文本', self)
        aCopyText.triggered.connect(self.onCopyText)
        aCopyHtml = QAction('復(fù)制Html文本', self)
        aCopyHtml.triggered.connect(self.onCopyHtml)
        aCopyImage = QAction('復(fù)制圖像',self)
        aCopyImage.triggered.connect(self.onCopyImage)
        
        aPaste = QAction('粘貼', self)
        aPaste.triggered.connect(self.onPaste)
        
        menuEdit.addAction(aCopyText)
        menuEdit.addAction(aCopyHtml)
        menuEdit.addAction(aCopyImage)
        menuEdit.addSeparator()
        menuEdit.addAction(aPaste)
        
    def onCopyText(self):
        #設(shè)置剪貼板文本
        clipboard = QApplication.clipboard()
        clipboard.setText('這是一段剪貼板文本')
        
    def onCopyHtml(self):
        mimeData = QMimeData()
        mimeData.setHtml("<b>Bold and <font color=red>Red</font></b>")
        clipboard = QApplication.clipboard()
        clipboard.setMimeData(mimeData)
        
    def onCopyImage(self):
        clipboard = QApplication.clipboard()
        clipboard.setPixmap(QPixmap(os.path.dirname(__file__) + "/python-logo.png"))
        
    def onPaste(self):
        clipboard = QApplication.clipboard()
        mimeData = clipboard.mimeData()
        print(mimeData.formats())
        if mimeData.hasFormat('text/plain'):
            self.showBox.setText(clipboard.text())
            #也可以使用下面方式
            #self.showBox.setText(mimeData.text())
        elif mimeData.hasHtml():
            self.showBox.setText(mimeData.html())
        elif mimeData.hasFormat('application/x-qt-image'):
            self.showBox.setPixmap(clipboard.pixmap())
    
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = DemoClipboard()
    window.show()
    sys.exit(app.exec())

運(yùn)行效果如下圖:

剪貼板操作測試

本文知識點(diǎn)

  • 剪貼板操作和拖放操作的技術(shù)實(shí)現(xiàn)類似。
  • 使用剪貼板粘貼普通文本,。
  • 使用剪貼板粘貼HTML文本,。
  • 使用剪貼板粘貼圖像。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多