首页 > 编程语言 >【Python开发技术之PyQt5精品教学】第36课--PyQt5 拖放功能

【Python开发技术之PyQt5精品教学】第36课--PyQt5 拖放功能

时间:2024-10-14 08:53:08浏览次数:3  
标签:__ text self PyQt5 开发技术 def 拖放

PyQt5 拖放功能

拖放功能对用户来说非常直观。它被应用于许多桌面应用程序,用户可以将对象从一个窗口复制或移动到另一个窗口。

基于MIME的拖放数据传输是基于QDrag类实现的。QMimeData对象将数据与对应的MIME类型关联起来。数据被存储在剪贴板中,然后在拖放过程中使用。

以下QMimeData类的函数方便地检测和使用MIME类型。

TesterGetterSetterMIME Types
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

许多QWidget对象支持拖放活动。允许拖动它们的数据的那些对象需要调用setDragEnabled()并将其设置为true。另一方面,小部件应该响应拖放事件以存储拖入它们的数据。

  • DragEnterEvent 提供了一个事件,当拖动操作进入目标小部件时会被发送。

  • DragMoveEvent 在拖放操作进行中使用。

  • DragLeaveEvent 在拖放操作离开小部件时生成。

  • DropEvent 发生在拖放完成时。可以有条件地接受或拒绝事件的建议操作。

示例

在以下代码中, DragEnterEvent 验证事件的MIME数据是否包含文本。如果是,事件的建议操作被接受,并且该文本被添加为ComboBox中的新项。

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

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("Type some text in textbox and drag it into combo box"))

      edit = QLineEdit()
      edit.setDragEnabled(True)
      com = combo("Button", self)
      lo.addRow(edit,com)
      self.setLayout(lo)
      self.setWindowTitle('Simple drag and drop')
def main():
   app = QApplication(sys.argv)
   ex = Example()
   ex.show()
   app.exec_()

if __name__ == '__main__':
   main()

上述代码产生以下输出 −

PyQt5 拖放功能

标签:__,text,self,PyQt5,开发技术,def,拖放
From: https://blog.csdn.net/xzs51job/article/details/142908775

相关文章

  • 【Python开发技术之PyQt5精品教学】第32课--PyQt5 QDialog类
    PyQt5QDialog类QDialog 是一个顶层窗口小部件,主要用于收集用户的响应。它可以配置为 模态 (它会阻塞其父窗口)或 非模态 (对话框窗口可以被绕过)。PyQt API有许多预配置的对话框小部件,例如InputDialog,FileDialog,FontDialog等。示例在下面的示例中,对话框窗口的 WindowMo......
  • 【Python开发技术之PyQt5精品教学】第24课--PyQt5 QTab小部件
    PyQt5QTab小部件如果一个表单具有太多字段无法同时显示,则可以将它们安排在选项卡窗口小部件的每个选项卡下的不同页面中。提供了一个选项卡栏和一个页面区域。第一个选项卡下的页面会显示,其他页面会隐藏。用户可以通过点击所需的选项卡来查看任何页面。以下是QTabWidget类的......
  • 【Python开发技术之PyQt5精品教学】第31课--PyQt5 QCalendar小工具
    PyQt5QCalendar小工具QCalendar小工具是一个有用的日期选择器控件。它提供了基于月份的视图。用户可以通过鼠标或键盘选择日期,默认为今天的日期。还可以指定日历的日期范围。以下是这个类的一些实用方法:序号方法和描述1setDateRange() :设置可选择的较低和较高日期。2setFi......
  • PyQt5/6 PySide2/6 在任务栏托盘区域编程,用于显示文字(图片)信息
    PyQt5/6PySide2/6在任务栏编程,用于显示文字(图片)信息本文使用PyQt5演示,其他库如PySide2/6,稍微改改就能用,因为其核心使用的是Win32gui来获取一些系统信息代码结构本文中全部代码全在test_taskbar.py这一个文件中编码,步骤中有变动的地方会注释标注,无改动的不会重复显示出来,需要......
  • 基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+
    《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~......
  • 如何用PyQt5创建多个窗口,同时获取多个U盘内的文件的名称,并分别在对应窗口打印文件名,要
    在PyQt5中,你可以使用QThread创建多个线程来并行处理每个U盘的文件名获取任务。每个线程负责扫描一个U盘的文件,同时在主窗口显示结果。以下是一个示例代码,用来创建多个窗口,同时在每个窗口中显示各自的U盘文件名:每个窗口使用QWidget。使用QThread创建后台线程获取U......
  • 深度学习实战人脸表情识别【源码+模型+PyQt5界面】
    @目录研究背景与意义代码下载链接一、效果演示1.1图像识别1.2视频识别1.3摄像头识别二、技术原理2.1整体技术流程2.2常见七种人脸表情2.3传统人脸定位2.4深度学习人脸定位2.4.1MTCNN2.4.2RetinaFace2.4.3CenterFace2.4.4BlazeFace2.4.5YOLO2.4.6SSD2.4.7CascadeCNN......
  • 基于深度学习的多焦点图像融合系统【数据集+深度学习模型+源码+PyQt5界面】
    @目录研究背景代码下载链接一、效果演示1.1界面设计1.2图像融合演示11.3图像融合演示21.4图像融合演示3二、技术原理2.1引言2.2融合策略2.3深度特征的提取2.4融合策略2.4.1利用深度特征计算模糊度2.4.2去噪与平滑2.4.3图像融合三、实验分析3.1实验设置3.1.1硬件环境3......
  • PyQt5 使用 QLabel 实现图像 360度 不间断旋转
    PyQt5使用QLabel实现图像360度不间断旋转当我们需要实现让一个图像360度旋转时,比如:音乐播放器中播放时,歌曲封面的旋转效果,你可以尝试使用下面的方法代码结构本文中全部代码全在test_QLabel_whirling.py这一个文件中编码,步骤中有变动的地方会注释标注,无改动的不会重复显......
  • Pyqt5+SQLite
    通常在做业务逻辑时会遇到,如何在界面上对数据库信息进行操作的问题。这里我们选用SQLite,它是一种嵌入式数据库,以单个独立的文件形式存储数据,适用于Pyqt5的开发。下面做一个小案例,将数据库信息显示在界面中。1.创建数据库代码案例如下(创建一个用户信息表):conn=sqlite3.con......