Найти - Пользователи
Полная версия: Drag'n'Drop файлов - нету нужных классов
Начало » GUI » Drag'n'Drop файлов - нету нужных классов
1
Ockonal
Здравствуйте, столкнулся с проблемой:
мне нужно реализовать перетаскивание файлов в окно моей программы. Переопределил нужные события:
    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 defined
P.S.
import sys
import os
import time
import threading

from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import *
poltergeist
Этот класс из прошлой версии Qt (как мне гугл подсказал). Я примерно так реализовывал дроп файлов:
mime = event.mimeData()
if mime.hasFormat('text/uri-list'):
links = urllib.unquote(str(mime.data('text/uri-list'))).splitlines()
....
Но тут есть такой нюанс, эти линки закодированы той кодировкой, которая используется в текущей файловой системе. Поэтому надо во-первых её знать и раскодировать линки в юникод, потом только с ними можно будет нормально работать… Сейчас только подумал, что наверное я сделал велосипед в своё время, и скорее всего есть готовое решение для этого по примеру того, что написано в примере выше (из Qt 3).
poltergeist
Блин, так и есть: функционал QUriDrag перешел в QMimeData и чтобы получить линки на файлы надо просто вызвать метод event.mimeData().urls(), который вернёт список с урлами… что можно с ними дальше делать - в документации написано.
Ockonal
Ок, спасибо. Мне главное, чтобы работало.
text/uri-list
Для всех типов файлов? Мне нужны абсолютно все. Подойдет такое?
Ockonal
Извиняюсь за то, что не посмотрел сразу в документацию. Проблему решено:
def dropEvent(self, event):
_pathToFile = event.mimeData().urls()
print _pathToFile[0].toLocalFile()
poltergeist, спасибо огромное за помощь!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB