wxPython - перетаскивание в StaticText в диктовке - PullRequest
0 голосов
/ 19 июля 2011

У меня проблема с использованием перетаскивания в 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 кажется родительским ...

Может ли кто-нибудь указать мне правильное направление?

1 Ответ

0 голосов
/ 19 июля 2011

Глупый я - self.object alread - self.itemsInDict[self.keyOfItemInDict][1].Так что

class DropTarget(wx.TextDropTarget):  

    def __init__(self, object):
        wx.TextDropTarget.__init__(self)
        self.object = object
    # ----


    def OnDropText(self, x, y, data):
        self.object.SetLabel('\n'+data+'\n')
    # ----

делает то, что мне нужно ...

...