У меня проблема с использованием перетаскивания в wxPython.
У меня есть ListCtrl, откуда я беру текст. Это источник, и он хорошо работает - я могу перетащить текст, который я хочу, в DnD и, например, удалить его. в мой редактор и MS Word. Таким образом, сторона благосклонности в порядке.
Для дальнейшего использования я сохранил перетаскиваемый текст в self.chosenText
Но у меня есть некоторые проблемы с целью падения.
Моей целью является StaticText (хранится в словаре с ключом: [список]), который помещается в GridBagSizer.
StaticText определен следующим образом и работает нормально:
self.itemsInDict['a'][1] = wx.StaticText(self, -1, '\ndrag monomer here\n', style=wx.ALIGN_CENTER)
Я также определил для дальнейшего использования:
self.keyOfItemInDict = 'a'
И это делается как цель - это тоже работает, указатель мыши указывает, что это действительная цель сброса:
target = DropTarget(self.itemsInDict['a'][1])
self.itemsInDict['a'][1].SetDropTarget(target)
Теперь мне нужно, чтобы метка StaticText изменялась в соответствии с текстом, который я перетаскиваю из элемента управления списком. Итак, я создал класс (пожалуйста, не смейтесь, я действительно пытался понять это, но не смог ...):
class DropTarget(wx.TextDropTarget):
def __init__(self, object):
wx.TextDropTarget.__init__(self)
self.object = object
# ----
def OnDropText(self, x, y, text):
self.object[self.keyOfItemInDict][1].SetLabel('\n'+self.chosenText+'\n')
# ----
Понятно, что возникает ошибка, что у DropTarget нет keyOfItemInDict. Использование self.parent не приводит к хорошему результату, так как StaticText кажется родительским ...
Может ли кто-нибудь указать мне правильное направление?