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