Как перетащить файл из вашего приложения в операционную систему — wxPython #22

Вот что уж действительно будет часто использоваться, так это перетаскивание файлов из вашего обычного приложения в файловую систему. В прошлой статье про Drag and Drop  вы видели пример перетаскивания файлов в ваше приложение. Теперь мы рассмотрим то, как их вытащить оттуда.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Приступая к работе

Как перетащить файл из вашего приложения в операционную систему - wxPython #22

Скорее всего вы решите использовать виджеты wx.ListCtrl или ObjectListView, так как они наиболее распространённые из тех, что используются для отображения информации. Давайте взглянем на код:

Здесь есть несколько важных мест. Для начала, вам нужно забиндить EVT_LIST_BEGIN_DRAG, чтобы обнаружить соответствующее событие. Затем ваш хэндлер должен создать объект wx.FileDataObject и использовать метод AddFile, чтобы присоединить весь путь к внутреннему списку файлов.

Согласно документации wxPython, AddFile был создан только для Windows. Как бы то ни было, так как Робин Дан (создатель wxPython) рекомендует данный метод, я буду использовать именно его. Хочу лишь отметить, что у меня он работал также и на Xubuntu 14.04. В любом случае, нам также нужно определить DropSource и вызвать его метод DoDragDrop, и вот теперь вы закончили.

Итоги

К этому месту вы уже должны иметь представление о том, как перетаскивать файлы из вашего приложения в файловую систему или прямо на рабочий стол. Это довольно просто, но подобная возможность точно расширит функционал вашего приложения и сделает его более привлекательным для конечного пользователя.