国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python GUI庫圖形界面開發(fā)之PyQt5控件數(shù)據(jù)拖曳Drag與Drop詳細使用方法與實例

瀏覽:5日期:2022-08-05 15:27:28
PyQt5數(shù)據(jù)拖曳Drag與Drop介紹

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

基于MIME類型的拖曳數(shù)據(jù)傳輸是基于QDrag類的,QMimeData對象將關聯(lián)的數(shù)據(jù)與其對應的MIME類型相關聯(lián)

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

每個MIME類型由兩部分組成,前面是數(shù)據(jù)的大類別,例如聲音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

任意的二進制數(shù)據(jù) application/octet-stream

MIME類型的數(shù)據(jù)可以簡單的理解為互聯(lián)網(wǎng)上的各種資源,比如文本,音頻和圖片等資源,互聯(lián)網(wǎng)上的每一種資源都屬于一種MIME類型的數(shù)據(jù)

MimeData類函數(shù)允許檢測和使用方便的MIME類型 判斷函數(shù) 設置函數(shù) 獲取函數(shù) MIME類型 hasText() text() setText() text/plain hasHtml() html() setHtml() text/html hasUrls() urls() setUrls() text/url-list hasImage() imageData() setImageData image/* hasColor() colorData() setColrDaata() application/x-color

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

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

import sysfrom 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) #當執(zhí)行一個拖曳控件操作,并且鼠標指針進入該控件時,這個事件將會被觸發(fā)。 # 在這個事件中可以獲得被操作的窗口控件,還可以有條件地接受或拒絕該拖曳操作 def dragEnterEvent(self,e): #檢測拖曳進來的數(shù)據(jù)是否包含文本,如有則接受,無則忽略 if e.mimeData().hasText(): e.accept() else: e.ignore() #當拖曳操作在其目標控件上被釋放時,這個事件將被觸發(fā) 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 GUI庫圖形界面開發(fā)之PyQt5控件數(shù)據(jù)拖曳Drag與Drop詳細使用方法與實例

代碼分析:

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

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

本文主要介紹了PyQt5控件數(shù)據(jù)拖曳Drag與Drop詳細使用方法與實例,更多關于這方面的知識請查看下面的相關鏈接

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 男人的天堂久久精品激情 | 三级黄网站 | 欧美a级毛片免费播敢 | 成年女人午夜免费视频 | 亚洲国产一区二区三区在线观看 | 在线观看免费国产 | 国产成人综合91精品 | 国产成人免费在线观看 | 美女毛片免费 | 精品欧美小视频在线观看 | 久久综合久久美利坚合众国 | 香港三级日本三级三级人妇 | 亚洲网站免费看 | 午夜精品同性女女 | 国产精品久久久久久久久久98 | 国产在线一区二区 | 国产精品欧美亚洲日本综合 | 国产成a人亚洲精v品久久网 | 国产高清一级毛片在线不卡 | 九九九精品视频免费 | 国产成人免费福利网站 | 欧美视频一 | 日韩在线视频不卡一区二区三区 | 夜色福利久久久久久777777 | 国产91丝袜美腿在线观看 | 日韩欧美一区二区三区不卡在线 | 男女性高清爱潮视频免费观看 | 在线视频 一区二区 | 久久久免费观看视频 | 久久女同互慰一区二区三区 | 日韩欧美久久一区二区 | 日本免费人做人一区在线观看 | 六月丁香婷婷色狠狠久久 | 国产精品99在线观看 | 国产精品视频一区二区三区 | 一级毛片免费观看不卡视频 | 在线观看日本永久免费视频 | 国产高清三级 | 成人性免费视频 | 色屁屁一区二区三区视频国产 | 日韩欧国产精品一区综合无码 |