Как исходный объект может получать информацию обратной связи об объекте в момент отбрасывания (DataSource)? - PullRequest
0 голосов
/ 06 октября 2011

У меня есть одно окно - EditWindow (объект класса, который является наследником wx.Frame), который содержит объект Grid (self.grid). В этом классе я пишу этот метод:

def OnSubindexGridCellLeftClick( self, event ):
        ....
        dragSource = MyDropSource( self.grid )
        dragSource.SetData( data )
        dragSource.DoDragDrop()
        event.Skip()

и связать его в __init__ окна редактирования:

self.grid.Bind( wx.grid.EVT_GRID_CELL_LEFT_CLICK, self.OnSubindexGridCellLeftClick )

в другом окне - "VariableWindow" у меня есть другая сетка - "VariablesGrid", и я определяю следующий класс:

class VariableDropTarget(wx.TextDropTarget):
    def __init__(self, parent):
        wx.TextDropTarget.__init__(self)
        self.ParentWindow = parent

    def OnDropText(self, x, y, data):
        x, y = self.ParentWindow.VariablesGrid.CalcUnscrolledPosition(x, y)
        ....

В другом окне я установил цель сброса:

self.VariablesGrid.SetDropTarget(VariableDropTarget(self))

Как я могу перехватить некоторую информацию об объекте - "VariablesGrid" в тот момент, когда я удаляю курсор из сетки (которая находится в EditorWindow). Я хочу взять информацию о данных в VariablesGrid, и как EditWindow может получить эту информацию? извините за мой плохой английский.

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Вы можете использовать pubsub для отправки данных в EditorWindow, а затем отобразить их.Выполняйте отправку только в методе OnDropText, чтобы он отправлялся только тогда, когда вы на самом деле отбрасываете в конце перетаскивания.Вот простое руководство по pubsub, которое поможет вам: http://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/

0 голосов
/ 06 октября 2011

Давайте посмотрим, понимаю ли я вопрос.

У вас есть исходное окно «перетаскивание» и окно назначения «перетаскивание».Вы хотите передать некоторую информацию из окна назначения в окно источника, когда пользователь выполняет перетаскивание.

Это правильно?

В общем, это невозможно сделать.Информационный поток идет от источника к месту назначения, как следует из названий.

Однако, если источник и место назначения находятся в одном и том же работающем приложении, его можно «подделать», вызвав метод назначения для вызова методав источнике, передавая требуемую информацию от места назначения к источнику, когда удаление завершено.

Если вы сделаете это, вы должны убедиться, что может запускаться только один экземпляр приложения, иначе возникнет хаосесли пользователь перетаскивает между двумя копиями приложения.

...