wxPython类到事件的字典

2024-10-04 03:29:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道是否有一个字典包含wxPython类的字符串版本(比如'Button'forwx.按钮)他们称之为事件。这就是我想要的:{'Button': wx.EVT_BUTTON, ...}。在模块中或网络上有这样的字典吗?在


Tags: 模块字符串版本网络字典wxpython事件button
3条回答

wxGlade知道这一点:对于每一个Widget,都有一个从class ManagedBase派生的class EditWidget,它有一个类属性events,保存着{}发送的事件的名称:

例如,在widgets/bitmap_button/bitmap_button.py你会发现

class EditBitmapButton(ManagedBase):

    events = ['EVT_BUTTON']

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

解释一下血钱博士说的话:

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

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

当你说“无”时,你会说:“我想知道是否有一个字典包含wxPython类的字符串版本(比如'Button'forwx.按钮)“我想你的意思是”对于事件,小部件也明确地有事件处理程序;事件处理程序通常是类方法,比如wx.Button.OnPaint公司()。”

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

\python\Lib\site-packages\wx-2.8-msw-unicode\wx\lib\buttons.py

还要记住,wx小部件可能无法处理像wx.EVT_按钮,但这并不意味着它不能。而且这样的小部件可能会将一些事件类型传递给它的父级,无论它的父级中是否有事件处理程序;比如wx.面板widget会的。在

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

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

很明显,这并不是你想要的,但是结果是非常直观的,可以知道什么能起作用。在

相关问题 更多 >