WxPython, привязка события двойного щелчка к определенному списку, в отличие от всех
Автор вопроса: XerphielОтветов: 3
В настоящее время я создаю графический интерфейс, и я использую список, пользователь дважды щелкнет элемент в списке, и выбранный элемент будет передан коду. Это работает нормально, но проблема, с которой я сталкиваюсь, заключается в том, что я не могу связать событие DoubleClick с одним списком, я просто получаю ошибки, и программа не запускается всякий раз, когда я пытаюсь добавить идентификатор.
Все вышеперечисленное терпит неудачу. Пожалуйста помоги!!!
Трудно отладить это, не зная, например. что такое self и т. д., или увидеть Traceback. Не могли бы вы опубликовать работающий минимальный пример. tom10 22.01.2012
У вас есть некоторые проблемы, которые приводят к сбою кода: вы индексируете serverfilelist в методе doubleclick. Однако этот список недоступен внутри метода. Вероятно, вы должны сделать что-то вроде:
(Если это не делает то, что вы хотите, было бы полезно получить дополнительную информацию, особенно опубликовать Traceback и наименьший возможный фрагмент кода, который работает, но все еще показывает ошибку.)
Ответ 3 · DevPlayer
Предыдущие сообщения направляют вас к решению, но могут быть некоторые другие моменты, которые можно уточнить, в чем может быть проблема.
События wx обрабатываются через иерархию объектов Python. Поэтому, если тип события привязан к, но кодер не знает, где событие заканчивается, вы можете не передать событие обработчику событий. В вашей линии
вы не можете сказать, кто является родительским виджетом self.serverlistbox. В одном из приведенных выше примеров родительским элементом является "panel1". Был ли у Panel1 обработчик EVT_LISTBOX_DCLICK? Этот обработчик передал событие своему родителю? Вы использовали для этого event.Skip()?
Существует не только проблема ссылки на объекты Python вне области действия, что делает полезную трассировку/исключение, но также существует проблема того, какой виджет получает событие и передается ли событие объекту с ограниченным обработчиком событий.
Вот пример, который может помочь показать обработчик событий распространения/правильно ограниченного, устраняющий проблемы с областью действия Python: