Форум сайта python.su
Здравствуйте, столкнулся с проблемой:
мне нужно реализовать перетаскивание файлов в окно моей программы. Переопределил нужные события:
def dragEnterEvent(self, event):
print 'dragEnterEvent coming...'
event.accept()
def dropEvent(self, event):
print 'dropEvent coming...'
droppedFileNames = QStrList()
QUriDrag.decode(event, droppedFileNames)
NameError: global name ‘QUriDrag’ is not definedP.S.
import sys
import os
import time
import threading
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import *
Офлайн
Этот класс из прошлой версии Qt (как мне гугл подсказал). Я примерно так реализовывал дроп файлов:
mime = event.mimeData()
if mime.hasFormat('text/uri-list'):
links = urllib.unquote(str(mime.data('text/uri-list'))).splitlines()
....
Офлайн
Блин, так и есть: функционал QUriDrag перешел в QMimeData и чтобы получить линки на файлы надо просто вызвать метод event.mimeData().urls(), который вернёт список с урлами… что можно с ними дальше делать - в документации написано.
Офлайн
Ок, спасибо. Мне главное, чтобы работало.
text/uri-list
Для всех типов файлов? Мне нужны абсолютно все. Подойдет такое?
Офлайн
Извиняюсь за то, что не посмотрел сразу в документацию. Проблему решено:
def dropEvent(self, event):
_pathToFile = event.mimeData().urls()
print _pathToFile[0].toLocalFile()
Отредактировано (Март 7, 2009 22:27:25)
Офлайн