Есть задача реализовать перетаскивание прикрепленных к сообщениям файлов из аутлука в приложение на wx.
К примеру, перетащить их в проводник виндас можно, а в свое приложение никак не могу реализовать.
Нарыл вот такой код:
# -*- coding: cp1251 -*-
import wx
import win32clipboard
import win32api
import win32con
class Frame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)
self.panel = wx.Panel(self)
dt = DropTarget()
self.panel.SetDropTarget(dt)
class DropTarget(wx.PyDropTarget):
def __init__(self):
wx.PyDropTarget.__init__(self)
self.do = wx.DataObjectComposite()
self.textdo = wx.TextDataObject()
self.filedo = wx.FileDataObject()
self.targetdo = wx.PyDataObjectSimple(format = wx.DataFormat(0xc00e))
self.do.Add(self.textdo)
self.do.Add(self.filedo)
self.do.Add(self.targetdo)
self.SetDataObject(self.do)
def OnData(self, x, y, drag_result):
if self.GetData():
df = self.do.GetReceivedFormat().GetType()
print df
if df in [wx.DF_UNICODETEXT, wx.DF_TEXT]:
win32clipboard.OpenClipboard(0)
data=win32clipboard.GetClipboardData(win32con.CF_HDROP)
win32clipboard.CloseClipboard()
tfile = win32api.DragQueryFile(drag_result)
# elif df == wx.DF_FILENAME:
# for name in self.filedo.GetFilenames():
# print name
return drag_result
class App(wx.App):
def __init__(self):
wx.App.__init__(self)
self.frame = Frame(None)
self.frame.Show()
if __name__ == "__main__":
app = App()
app.MainLoop()
Делал кто-нибудь такую штуку? Сможет кто помочь? Я уже запарился.. Спасибо.