Как получить подробную информацию о событии в wxPython - PullRequest
0 голосов
/ 30 июня 2011

У меня есть фрагмент кода, который возвращает события, созданные ползунком.

Я связываю событие с self.Bind(wx.EVT_SCROLL,self.OnSlide).

Код, который обрабатывает событие, выглядит примерно так:

def OnSlide(self,event):
    widget = event.GetEventObject()

Это здорово, но при каждом выполнении кода выдается ошибка.Он гласит:

AttributeError: 'PyEventBinder' object has no attribute 'GetEventObject'

Я хочу видеть, какие из ползунков сгенерировали событие, но ошибка появляется каждый раз, когда я пытаюсь выяснить.

Как я могу получить кодвыполнить правильно?

Большое спасибо заранее.

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Чтобы отладить что-то подобное, поместите следующее в качестве первого оператора в вашем обработчике событий:

import pdb; pdb.set_trace()

Это остановит выполнение программы в этот момент и даст вам интерактивное приглашение.Затем вы можете выполнить следующую команду, чтобы узнать, какие методы доступны:

print dir(event)

Когда я только начинал изучать wxPython, я нашел эту технику бесценной.

0 голосов
/ 30 июня 2011

У меня работает следующее на Windows 7, wxPython 2.8.10.1, Python 2.5

import wx

class MyForm(wx.Frame):

    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, title="Tutorial")

        # Add a panel so it looks the correct on all platforms
        panel = wx.Panel(self, wx.ID_ANY)

        slider = wx.Slider(panel, size=wx.DefaultSize)
        slider.Bind(wx.EVT_SLIDER, self.onSlide)

    #----------------------------------------------------------------------
    def onSlide(self, event):
        """"""
        obj = event.GetEventObject()
        print obj

#----------------------------------------------------------------------
# Run the program
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm().Show()
    app.MainLoop()
...