91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python中使用Drag與Drop控件

發布時間:2021-03-20 16:31:15 來源:億速云 閱讀:383 作者:Leah 欄目:開發技術

本篇文章為大家展示了怎么在python中使用Drag與Drop控件,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

PyQt5數據拖曳Drag與Drop介紹

為用戶提供的拖曳功能很直觀,在很對桌面應用程序中,復制或移動對象都可以通過拖曳來完成

基于MIME類型的拖曳數據傳輸是基于QDrag類的,QMimeData對象將關聯的數據與其對應的MIME類型相關聯

MIME意為多功能Internet郵件擴展,它設計的最初目的是為了在發送電子郵件時附加多媒體數據,讓郵件客戶程序能根據其類型進行處理。然而當它被HTTP協議支持之后,它的意義就更為顯著了。它使得HTTP傳輸的不僅是普通的文本,而變得豐富多彩。

每個MIME類型由兩部分組成,前面是數據的大類別,例如聲音audio、圖象image等,后面定義具體的種類。

常見的MIME類型(通用型):

超文本標記語言文本 .html text/html

xml文檔 .xml text/xml

XHTML文檔 .xhtml application/xhtml+xml

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

PDF文檔 .pdf application/pdf

Microsoft Word文件 .word application/msword

PNG圖像 .png image/png

GIF圖形 .gif image/gif

JPEG圖形 .jpeg,.jpg image/jpeg

au聲音文件 .au audio/basic

MIDI音樂文件 mid,.midi audio/midi,audio/x-midi

RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar

任意的二進制數據 application/octet-stream

MIME類型的數據可以簡單的理解為互聯網上的各種資源,比如文本,音頻和圖片等資源,互聯網上的每一種資源都屬于一種MIME類型的數據

MimeData類函數允許檢測和使用方便的MIME類型

判斷函數設置函數獲取函數MIME類型
hasText()text()setText()text/plain
hasHtml()html()setHtml()text/html
hasUrls()urls()setUrls()text/url-list
hasImage()imageData()setImageDataimage/*
hasColor()colorData()setColrDaata()application/x-color

許多QWidget對象都支持拖曳動作,允許拖曳數據的控件必須設置QWidget.setDragEnabled()為True,另外,控件應該響應拖曳事件,以便儲存所拖曳的數據

常用的拖曳事件如表

事件描述
DragEnterEvent當執行一個拖曳控件操作,并且鼠標指針進入該控件時,這個事件將會被觸發。在這個事件中可以獲得被操作的窗口控件,還可以有條件地接受或拒絕該拖曳操作
DragMoveEvent在拖曳操作進行時會觸發該事件
DragLeaveEvent當執行一個拖曳操作,并且鼠標指針離開該控件時,這個事件被觸發
DropEvent當拖曳操作在其目標控件上被釋放時,這個事件將被觸發

Drag拖曳功能實例

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class Combo(QComboBox):
  def __init__(self,title,parent):
    super(Combo, self).__init__(parent)
    #設置為可接受拖曳操作文本
    self.setAcceptDrops(True)

  #當執行一個拖曳控件操作,并且鼠標指針進入該控件時,這個事件將會被觸發。
  # 在這個事件中可以獲得被操作的窗口控件,還可以有條件地接受或拒絕該拖曳操作
  def dragEnterEvent(self,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('請把左邊的文本拖曳到右邊的下拉菜單中'))

    #實例化單行文本框,設置為允許拖曳操作
    edit=QLineEdit()
    edit.setDragEnabled(True)

    #實例化Combo對象,添加控件到布局中
    com=Combo('Button',self)
    lo.addRow(edit,com)

    #設置主窗口布局及標題
    self.setLayout(lo)
    self.setWindowTitle('簡單的拖曳例子')

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

效果如圖

怎么在python中使用Drag與Drop控件

代碼分析:

在這個例子中,DragEnterEvent會驗證事件的MIM的數據是否包含字符串文本,如果包含字符串文本,就接受事件提出的添加文本操作,并將文本作為新條目(Item)添加到ComboBox控件中,否則忽略這次操作

  def dragEnterEvent(self,e):
    #檢測拖曳進來的數據是否包含文本,如有則接受,無則忽略
    if e.mimeData().hasText():
      e.accept()
    else:
      e.ignore()

上述內容就是怎么在python中使用Drag與Drop控件,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延安市| 竹山县| 茶陵县| 明溪县| 张家界市| 乡宁县| 东光县| 航空| 巴东县| 余姚市| 广东省| 公主岭市| 原平市| 民权县| 蓬安县| 河西区| 沾化县| 华坪县| 阿克苏市| 南昌市| 江孜县| 砚山县| 蕉岭县| 金沙县| 红河县| 康定县| 新余市| 怀远县| 饶阳县| 聂荣县| 甘孜县| 江阴市| 青铜峡市| 合江县| 建瓯市| 武安市| 广安市| 文水县| 象州县| 弋阳县| 赤壁市|