最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python PyQt5實(shí)現(xiàn)拖拽與剪貼板功能詳解

 更新時(shí)間:2022年12月01日 15:07:20   作者:SongYuLong的博客  
這篇文章主要為大家詳細(xì)介紹了Python PyQt5如何實(shí)現(xiàn)拖拽與剪貼板功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

拖拽

基于MIME類型的拖拽數(shù)據(jù)傳輸時(shí)基于QDrag類的QMimeData對(duì)象管理的數(shù)據(jù)與其對(duì)應(yīng)的MIME類型相關(guān)聯(lián)。

MimeData類函數(shù)允許檢測(cè)和使用方法的MIME類型

判斷函數(shù)設(shè)置函數(shù)獲取函數(shù)MIME類型
hasText()text()setText()text/plain
hasHtml()html()setHtml()text/html
hasUrls()urls()setUrls()text/uri-list
hasImage()imageData()setImageData()image/*
hasColor()colorData()setColorData()application/x-color

常用拖拽事件

事件描述
DragEnterEvent當(dāng)執(zhí)行一個(gè)拖拽控件操作,并且鼠標(biāo)指針進(jìn)入該控件時(shí)被觸發(fā)
DragMoveEvent在拖拽操作進(jìn)行時(shí)會(huì)觸發(fā)該事件
DragLeaveEvent當(dāng)執(zhí)行一個(gè)拖拽控件操作,并且鼠標(biāo)指針離開該控件時(shí)被觸發(fā)
DropEvent當(dāng)拖拽操作在目標(biāo)控件上被釋放時(shí),觸發(fā)該事件
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

class Combo(QComboBox):
    def __init__(self, title, parent):
        super(Combo, self).__init__(parent)
        self.setAcceptDrops(True)
    
    def dragEnterEvent(self, e):
        print(e)
        if e.mimeData().hasText():
            e.accept()
        else:
            e.ignore()
    
    def dropEvent(self, e):
        self.addItem(e.mimeData().text())

class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()
    
    def initUI(self):
        lo = QFormLayout()
        lo.addRow(QLabel("請(qǐng)把左邊的文本拖拽到右邊的下拉菜單中"))
        edit = QLineEdit()
        edit.setDragEnabled(True)
        com = Combo("Button", self)
        lo.addRow(edit, com)
        self.setLayout(lo)
        self.setWindowTitle("簡(jiǎn)單的拖拽例子")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = Example()
    win.show()
    sys.exit(app.exec_())

剪貼板

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

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

QClipboard常用方法

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

QClipboard類中的常用信號(hào)

信號(hào)含義
dataChanged當(dāng)剪貼板內(nèi)容發(fā)生變化時(shí)觸發(fā)該信號(hào)
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__), "images/clock.png")))

        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)
        self.setLayout(layout)

        textCopyButton.clicked.connect(self.copyText)
        textPasteButton.clicked.connect(self.pasteText)
        imageCopyButton.clicked.connect(self.copyImage)
        imagePasteButton.clicked.connect(self.pasteImage)
        htmlCopyButton.clicked.connect(self.copyHtml)
        htmlPasteButton.clicked.connect(self.pasteHtml)

    def copyText(self):
        print(os.path.join(os.path.dirname(__file__)))
        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.jpg")))

    def pasteImage(self):
        clipboard = QApplication.clipboard()
        self.imageLabel.setPixmap(clipboard.pixmap())
    
    def copyHtml(self):
        mimeData = QMimeData()
        mimeData.setHtml("<b>Bold and<font color=red>Red</font></b>")
        clipboard = QApplication.clipboard()
        clipboard.setMimeData(mimeData)

    def pasteHtml(self):
        clipboard = QApplication.clipboard()
        mimeData = clipboard.mimeData()
        if mimeData.hasHtml():
            self.textLabel.setText(mimeData.html())

            
if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = Form()
    win.show()
    sys.exit(app.exec_())

到此這篇關(guān)于Python PyQt5實(shí)現(xiàn)拖拽與剪貼板功能詳解的文章就介紹到這了,更多相關(guān)PyQt5拖拽 剪貼板內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN

    TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN

    這篇文章主要為大家詳細(xì)介紹了TensorFlow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)CNN,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python XlsxWriter模塊創(chuàng)建aexcel表格的實(shí)例講解

    python XlsxWriter模塊創(chuàng)建aexcel表格的實(shí)例講解

    今天小編就為大家分享一篇python XlsxWriter模塊創(chuàng)建aexcel表格的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Vue中自定義指令的三個(gè)常用方法小結(jié)

    Vue中自定義指令的三個(gè)常用方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了Vue中自定義指令的三個(gè)常用方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解一下
    2024-02-02
  • 黑科技 Python腳本幫你找出微信上刪除你好友的人

    黑科技 Python腳本幫你找出微信上刪除你好友的人

    黑科技,Python腳本幫你找出微信上刪除你好友的人,有興趣的朋友可以閱讀一下
    2016-01-01
  • 基于Python編寫一個(gè)自動(dòng)關(guān)機(jī)程序

    基于Python編寫一個(gè)自動(dòng)關(guān)機(jī)程序

    這篇文章主要介紹了基于Python編寫的一個(gè)自動(dòng)關(guān)機(jī)程序,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的同學(xué)可以學(xué)習(xí)一下
    2022-01-01
  • Python和JS反爬之解決反爬參數(shù)?signKey

    Python和JS反爬之解決反爬參數(shù)?signKey

    這篇文章主要介紹了Python和JS反爬之解決反爬參數(shù)?signKey,Python?反爬中有一大類,叫做字體反爬,核心的理論就是通過字體文件或者?CSS?偏移,接下來文章的詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Python利用魔法方法玩轉(zhuǎn)對(duì)象

    Python利用魔法方法玩轉(zhuǎn)對(duì)象

    Python中魔法方法(magic method)其實(shí)就是那些被雙下劃線包圍的方法,這些魔法方法為類添加了**“魔力”,讓我們可以在面向?qū)ο缶幊讨杏酶雍?jiǎn)潔的代碼來操作對(duì)象,下面我們就來具體了解一下如何利用魔法方法玩轉(zhuǎn)對(duì)象吧
    2023-12-12
  • python 遍歷列表提取下標(biāo)和值的實(shí)例

    python 遍歷列表提取下標(biāo)和值的實(shí)例

    今天小編就為大家分享一篇python 遍歷列表提取下標(biāo)和值的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python Django框架介紹之模板標(biāo)簽及模板的繼承

    Python Django框架介紹之模板標(biāo)簽及模板的繼承

    今天給大家?guī)鞵ython Django框架的相關(guān)知識(shí),文中對(duì)模板標(biāo)簽及模板的繼承介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Python?argparse庫的基本使用步驟

    Python?argparse庫的基本使用步驟

    argparse庫是python下的一個(gè)命令行參數(shù)管理庫,支持int、str、float、bool、數(shù)組等5種基本數(shù)據(jù)類型,這篇文章主要介紹了Python?argparse庫的基本使用,需要的朋友可以參考下
    2022-07-07

最新評(píng)論

惠州市| 石棉县| 四子王旗| 威远县| 肇东市| 隆安县| 苏尼特右旗| 商丘市| 卢龙县| 普陀区| 怀宁县| 金乡县| 景东| 津南区| 长治市| 肥西县| 阳山县| 积石山| 高台县| 曲水县| 永靖县| 缙云县| 青冈县| 新密市| 平舆县| 贵州省| 三台县| 遵化市| 夏河县| 桂平市| 大竹县| 莱阳市| 南丰县| 沁水县| 红原县| 孟州市| 吉木乃县| 辽宁省| 花莲市| 监利县| 通渭县|