添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

之前使用pyqt写过一个升级工具, 使用的过程中发现每次通过文件选项框选择文件太过于麻烦,如果可以支持拖拽文件进入就简便很多,于是去查了一下更新了一下工具;

因为我使用的组件是QLineEdit存放文件地址,因此为了支持重载,写了一个新的类,继承了QLineEdit,重载了两个关于拖拽的函数;新建文件 MLineEdit.py

# -*- coding: utf-8 -*-
from PySide2.QtWidgets import QLineEdit
class MLineEdit(QLineEdit):
    def __init__(self, title, parent):
        super().__init__(title, parent)
        self.setAcceptDrops(True)
    def dragEnterEvent(self, e):
        if e.mimeData().hasText():
            e.accept()
        else:
            e.ignore()
    def dropEvent(self, e):
        filePathList = e.mimeData().text()
        filePath = filePathList.split('\n')[0] #拖拽多文件只取第一个地址
        filePath = filePath.replace('file:///', '', 1) #去除文件地址前缀的特定字符
        self.setText(filePath)

然后在主窗口文件mainwindow.pyfrom MLineEdit import MLineEdit导入类;将原来文件地址栏的创建语句改为

class Ui_MainWindow(object):
    def setupUi(self, MainWindow): 
    	#中间其他语句省略,将地址栏对象的创建改为这个,后面的self.centralwidget是布局,根据你的实际项目来, ufn_lineEdit是组件名,根据实际来;
		self.ufn_lineEdit = MLineEdit("", self.centralwidget)

这是再进性编译测试发现,文件地址栏就可以支持拖拽了,如果你怕别人不知道你支持拖拽,可以再加一句self.ufn_lineEdit.setToolTip("可将固件拖入地址栏!")

  1. PyQt - Drag & Drop
  2. Drag and Drop
问题之前使用pyqt写过一个升级工具, 使用的过程中发现每次通过文件选项框选择文件太过于麻烦,如果可以支持拖拽文件进入就简便很多,于是去查了一下更新了一下工具;结果因为我使用的组件是QLineEdit存放文件地址,因此为了支持重载,写了一个新的类,继承了QLineEdit,重载了两个关于拖拽的函数;新建文件MLineEdit.py# -*- coding: utf-8 -*-from PySide2.QtWidgets import QLineEditclass MLineEdit(QLine
pyqt中一些原生widget所具有的功能有时候不能满足我们使用的需求时,可以自己动手自定义新类,利用类的继承,保留原有功能,并补充或重修一些新功能。这里,将对ListWidget增加拖拽、编辑和右键菜单功能。 代码如下(示例): #-*-coding:utf-8-*- import sys from PyQt5 import QtWidgets from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import
由于最近在学习pyqt5的相关知识,在网上找了几篇教程看,于是就写了这篇学习笔记。本文只是一些案例的代码以及演示,详细的讲解请看原文。 原文链接:https://zetcode.com/gui/pyqt5/ 中文翻译:http://www.360doc.com/content/19/1022/14/12906439_868371487.shtml 文章目录1、简单的拖放2、拖放按钮组件 1、简单的拖放 QDrag提供对基于MIME的拖放数据传输的支持。它处理拖放操作的大多数细节。传输的数据包含在一个QM.
Qt Designer是PyQt程序UI界面的实现工具,使用Qt Designer可以拖拽、点击完成GUI界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用。本文主要通过用户登录需求描述Qt Designer工具开发界面的使用方法。 本文主要内容 1、Qt Designer程序主界面窗口介绍。 2、Qt Designer程序实现界面开发的案例。包括使用Qt Designer实现程序Gui开发、使用pyuic5将.ui转换.py程序、信号与槽的配置以及实现、使用pyin..
参考:https://blog.csdn.net/jia666666/article/details/81568326 为用户提供拖拽功能很直观,在很多桌面应用程序中,复制和移动对象都可以通过拖拽来完成 基于MIME类型的拖曳数据传输是基于QDrag类的,QMimeData对象将关联的数据与其对应的MIME类型相关联 MIME意为多功能Internet邮件扩展,它设计的最初目的是为了在发送...
PyQt中,可以通过拖拽的方式获取文件的路径。要实现这个功能,需要使用QDragEnterEvent和QDropEvent两个事件。 首先,我们绑定拖拽事件。这可以通过覆盖QWidget的dragEnterEvent方法来实现,参数ev表示事件对象。 def dragEnterEvent(self, ev): if ev.mimeData().hasUrls(): ev.accept() else: ev.ignore() 在这个方法中,判断事件是否包含URL,如果包含则接受事件,否则忽略。 接着,我们实现拖拽完成后的处理。同样,我们覆盖QWidget的dropEvent方法。 def dropEvent(self, ev): for url in ev.mimeData().urls(): file_path = url.toLocalFile() print(file_path) 在这个方法中,我们从事件对象的mimeData中获取URL,然后通过toLocalFile方法获取文件路径,并打印出来。 这样,当用户拖拽文件PyQt应用程序的窗口中时,程序就可以获取到文件的路径了。 以上是一个简单的实现方式,当然还有其它更复杂的实现方法。实际开发中,可以根据具体需求进行选择。