命令+;wxPython中的W支持

命令+;wxPython中的W支持,python,macos,user-interface,wxpython,Python,Macos,User Interface,Wxpython,据我所知,在OSX的wxPython中,⌘+支持关闭wx.Window对象。为了添加它,我必须绑定到wx.EVT_KEY_DOWN,显式地检查event.MetaDown()和event.KeyCode=='W' 在我的应用程序中,我需要所有的窗口和对话框都支持这一点。我还在设计我的GUI,但我开始思考,我想知道什么是最容易将这种支持添加到现有类的方法。我尝试了多重继承,但它似乎不起作用(我的事件处理程序从未被调用) 我想可能是一个类装饰器,但由于python的动态特性,这是将在运行时添加的功能

据我所知,在OSX的wxPython中,⌘+支持关闭wx.Window对象。为了添加它,我必须绑定到wx.EVT_KEY_DOWN,显式地检查
event.MetaDown()
event.KeyCode=='W'

在我的应用程序中,我需要所有的窗口和对话框都支持这一点。我还在设计我的GUI,但我开始思考,我想知道什么是最容易将这种支持添加到现有类的方法。我尝试了多重继承,但它似乎不起作用(我的事件处理程序从未被调用)

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

PS:我知道“最佳”是主观的,但我诚实地在这里寻找任何可能工作的东西,而不是大量的代码

我在想也许上一节课 装饰,但这是功能 由于以下原因,将在运行时添加 python的动态特性


我不明白为什么这会让你“有点难堪”。类装饰器在
class
语句结束后执行——是的,这是“在运行时”,但是
clqss
语句本身也是如此,它中的所有
def
语句用于其方法,等等。当您实例化任何这样修饰的类时,装饰器将已经运行,因此您正在实例化的类将被装饰器的代码相应地修改。你能举一个小例子说明为什么这对你不起作用吗?

好吧,我想我可能不是一直在想。由于我必须在
\uuuu init\uuuu
阶段
绑定事件处理程序,所以我基本上要做的是包装
\uuuu init\uuuu
函数,以及在装饰程序中向类动态添加一个方法来处理事件。让我看看我能想出什么。