wxPython他们调用的事件类的字典

时间:2010-05-12 01:44:57

标签: python class dictionary events wxpython

我想知道是否有一个包含字符串版本的wxPython类的字典(比如wx.Button的'Button')到他们调用的事件。这就是我想要的:{'Button': wx.EVT_BUTTON, ...}。在模块或网络上的任何地方都有这样的字典吗?

3 个答案:

答案 0 :(得分:0)

这就是我所做的(可能在某个时候从邮件列表中获取):

for i in dir(wx):
    if i.startswith('EVT_'):
        print i

显然,这并不是你所要求的,但结果非常直观,无法弄清楚是什么。

答案 1 :(得分:0)

wxGlade知道这一点:对于每个Widget,都有class EditWidget派生自class ManagedBase的{​​{1}},其类属性events包含事件的名称由Widget发送:

e.g。在widgets/bitmap_button/bitmap_button.py你会找到

class EditBitmapButton(ManagedBase):

    events = ['EVT_BUTTON']

您可以通过导入所有这些类来收集所需的信息(我认为可以自动完成)并阅读他们的events属性。

答案 2 :(得分:0)

阐述DrBloodmoney所说的话:

adict = {}
for k,v in dir(wx):
    if k.startswith('EVT_'):
       adict[k[3:]] = v

然而;要知道尽管EVT_SOMETHING是一个事件类并且是唯一的,但是没有保证Event对象的ID号是唯一的(不要与Python的id()内置函数混淆)。

同样当你,'无',说:"我想知道是否有一个包含字符串版本的wxPython类的字典(如' Button' for wx.Button )他们称之为的事件。"我认为你的意思是小部件显然也有事件处理程序;事件处理程序通常是类方法,如wx.Button.OnPaint()。"

要查找任何窗口小部件具有哪些事件处理程序,以及何时不使用wxGlade,您可以打开每个窗口小部件Python模块文件。例如:

  

\蟒\ LIB \站点包\ WX-2.8 MSW-的unicode \ WX \ lib中\ buttons.py

还要记住,虽然wx小部件可能无法处理像wx.EVT_BUTTON这样的事件类型,但这并不意味着它无法处理。此外,这样的小部件可能会将一些事件类型传递给它的父母,无论其中是否存在事件处理程序或其中的父级;就像wx.Panel小部件一样。