2010-09-22 81 views
0

这是我的理解,在OSX的wxPython中,⌘+ w支持关闭wx.Window对象。为了添加它,我必须绑定到wx.EVT_KEY_DOWN,明确地检查event.MetaDown()event.KeyCode == 'W'wxPython中的Command + W支持

在我的应用程序中,我需要所有的窗口和对话框支持这一点。我仍然在布局我的GUI,但我不得不想,我想知道什么是将这种支持轻松添加到现有类的最佳方式。我尝试了多重继承,但它似乎没有工作(我的事件处理程序从未被调用过)。

我在想也许是一个类装饰器,但这是由于python的动态特性,将在运行时添加的功能。所以我有点难住。

PS:我知道“最好”是主观的,但我诚实地寻找什么在这里可能的工作,这不是代码高昂量。

回答

0

我想也许一类 装饰,但这是功能 将在运行时被添加,由于 蟒蛇的动态特性。

我不明白为什么这会让你“有点难倒”。类装饰器在class语句结束后执行 - 是的,这是“在运行时”,但clqss语句本身,其所有的def语句都在其语句中执行,等等。当你实例化任何这样装饰的类时,装饰器将会运行,所以你正在实例化的类将被修饰器的代码相应地修改。你能举一个小例子说明为什么这不适合你吗?

+0

嗯,我想我可能没有想到这一切。由于我必须在'__init__'阶段'绑定'事件处理程序,所以我基本上必须做的就是包装'__init__'函数,并且动态地将一个方法添加到装饰器中的类中以处理事件。让我看看我能想出什么。 – rossipedia 2010-09-22 17:33:45