之前使用pyqt写过一个升级工具, 使用的过程中发现每次通过文件选项框选择文件太过于麻烦,如果可以支持拖拽文件进入就简便很多,于是去查了一下更新了一下工具;
因为我使用的组件是QLineEdit存放文件地址,因此为了支持重载,写了一个新的类,继承了QLineEdit,重载了两个关于拖拽的函数;新建文件
MLineEdit.py
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.py
中from MLineEdit import MLineEdit
导入类;将原来文件地址栏的创建语句改为
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.ufn_lineEdit = MLineEdit("", self.centralwidget)
这是再进性编译测试发现,文件地址栏就可以支持拖拽了,如果你怕别人不知道你支持拖拽,可以再加一句self.ufn_lineEdit.setToolTip("可将固件拖入地址栏!")
;
- PyQt - Drag & Drop
- 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应用程序的窗口中时,程序就可以获取到文件的路径了。
以上是一个简单的实现方式,当然还有其它更复杂的实现方法。实际开发中,可以根据具体需求进行选择。