應用之間交換資料除了可以使用拖放技術外,還可使用剪貼簿。乙個應用把資料放到剪貼簿,另乙個應用從剪貼簿中提出資料。
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模式下,可以滑...