zoukankan      html  css  js  c++  java
  • 拖放

    拖放分为拖动和放下两个动作,它们涉及到以下事件:

    DragEnterEvent: 所拖动目标进入接收该事件的窗口或控件时触发;
    DragMoveEvent: 所拖动目标进入窗口或控件后,继续被拖动时触发;
    DragLeaveEvent: 所拖动目标离开窗口或控件时触发;
    DropEvent: 所拖动目标被放下时触发

    通常情况下,我们可以拖放两种东西:数据和一些图形对象.如果我们把一张图片从一个程序拖放到另一个程序上,那我们拖放的是二进制数据.如果我们在Firefox里拖一个标签,然后把它放到别的地方,那么我们拖放的是一个图形组件

    例一拖放txt文件

     1 import sys
     2 from PyQt5.QtWidgets import QApplication, QTextBrowser
     3 
     4 
     5 class Demo(QTextBrowser):
     6     def __init__(self):
     7         super(Demo, self).__init__()
     8         self.setAcceptDrops(True)  # 设置控件是否允许拖放
     9 
    10     def dragEnterEvent(self, e):  #所拖动目标进入接收该事件的窗口或控件时触发
    11         print('拖动进入')
    12         if e.mimeData().hasText():#是否支持文本文件格式
    13             #类型列表参考:http://www.w3school.com.cn/media/media_mimeref.asp
    14             e.acceptProposedAction()  #接受拖放操作
    15 
    16     def dragMoveEvent(self, QDragMoveEvent):  #所拖动目标进入窗口或控件后,继续被拖动时触发
    17         print('在拖动')
    18 
    19     def dragLeaveEvent(self, QDragLeaveEvent):  #所拖动目标离开窗口或控件时触发
    20         print('Drag Leave')
    21 
    22     def dropEvent(self, QDropEvent):  #所拖动目标被放下时触发
    23         print('放下拖动')
    24         # MacOS
    25         txt_path = QDropEvent.mimeData().text().replace('file:///', '/')
    26 
    27         # Linux
    28         # txt_path = QDropEvent.mimeData().text().replace('file:///', '/').strip()
    29 
    30         # Windows
    31         txt_path = QDropEvent.mimeData().text().replace('file:///', '')  #获取本地路径
    32         #QDropEvent.mimeData().text()方法获取MIME数据对象中文本,对文件来说就是URI路径.  file:///C:/Users/ming/Desktop/ssss.txt
    33 
    34         with open(txt_path, 'r') as f:
    35             self.setText(f.read())
    36 
    37 
    38 if __name__ == '__main__':
    39     app = QApplication(sys.argv)
    40     demo = Demo()
    41     demo.show()
    42     sys.exit(app.exec_())
  • 相关阅读:
    极客mysql01
    Mysql之存储过程与存储函数
    MySQL视图详细介绍
    mysql 触发器的创建和使用
    分治 315. 计算右侧小于当前元素的个数
    128. 最长连续序列
    MySQL慢查询开启、日志分析(转)
    如何在Linux服务器上安装MariaDB或MySQL?
    如何重设MySQL的root密码
    如何修复docker-machine: command not found error
  • 原文地址:https://www.cnblogs.com/liming19680104/p/10372187.html
Copyright © 2011-2022 走看看