實戰PyQt5 101 使用剪貼簿

2021-10-11 15:36:45 字數 3021 閱讀 9099

應用之間交換資料除了可以使用拖放技術外,還可使用剪貼簿。乙個應用把資料放到剪貼簿,另乙個應用從剪貼簿中提出資料。

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

任何型別的mimedata都可以從剪下板複製或貼上。

qclipboard類的常用方法:

clipboard.setimage (qtgui.qimage ("image.jpg"))
clipboard.setpixmap (qtgui.qpixmap ("image, jpg"))
qclipboard類中的常用訊號:

測試**中測試複製普通文字,html文字和影象三種方式,貼上使用qmimedata進行格式判斷,輸出相應資訊,因此貼上功能也支援從其他應用中的資料拷貝貼上操作,比如從notepad記事本中複製文字或者從mspaint繪圖板中複製影象貼上到視窗中。完整**如下:

import sys,os

from pyqt5 import qtcore, qtgui, qtwidgets

from pyqt5.qtcore import qt, qmimedata

from pyqt5.qtgui import qpixmap

qmenubar, qmenu, qaction)

class democlipboard(qmainwindow):

def __init__(self, parent=none):

super(democlipboard, self).__init__(parent)   

# 設定視窗標題

self.setwindowtitle('實戰pyqt5: qclipboard 剪貼簿演示')      

# 設定視窗大小

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('複製文字', self)

acopytext.triggered.connect(self.oncopytext)

acopyhtml = qaction('複製html文字', self)

acopyhtml.triggered.connect(self.oncopyhtml)

acopyimage = qaction('複製影象',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):

#設定剪貼簿文字

clipboard.settext('這是一段剪貼簿文字')

def oncopyhtml(self):

mimedata = qmimedata()

mimedata.sethtml("bold and red")

clipboard.setmimedata(mimedata)

def oncopyimage(self):

clipboard.setpixmap(qpixmap(os.path.dirname(__file__) + "/python-logo.png"))

def onpaste(self):

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())

self.showbox.setpixmap(clipboard.pixmap())

if __name__ == '__main__':

window = democlipboard()

window.show()

執行效果如下圖:

剪貼簿操作測試

前一篇: 實戰pyqt5: 100-給應用新增拖放支援

PyQt5 系統剪貼簿操作

近期做畢業設計,用的pyqt5做乙個windows軟體。有一部分需要對檔案或者資料夾進行,複製與貼上操作,查了好久,終於找到了方法 data qmimedata url qurl.fromlocalfile file path data.seturls url clipboard.setmimeda...

GTK 剪貼簿使用例項

gtk 剪貼簿使用例項 功能強大,但其風格與 win32 上剪貼簿相差極大,對於剛接觸 gtk 程式設計的程式設計師來說,特別是已經習慣於 win32 剪貼簿用法的程式設計師來說,易用性不是太好。這方面的文件也比較少,最近學習使用 gtk 基本用法 通過剪貼簿操作內建的資料型別非常方便,但內建的型別...

Vim使用系統剪貼簿

vim基本的剪下命令 n dd,複製命令 n yy,貼上命令p都是使用同乙個暫存器,只能在同乙個vim程序下使用。vim所有的暫存器內容可以通過 reg命令檢視。如果需要將vim中的文字複製到其他程式,更加方便的方式是使用系統剪貼簿。在 set mouse 或者 set mouse v模式下,可以滑...