【问题标题】:Command+W Support in wxPythonwxPython 中的 Command+W 支持
【发布时间】:2010-09-22 00:37:06
【问题描述】:

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

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

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

PS:我知道“最佳”是主观的,但老实说,我在这里寻找任何可能有效且代码量不高的东西。

【问题讨论】:

    标签: python macos user-interface wxpython


    【解决方案1】:

    我在想也许是一堂课 装饰器,但这是功能 将在运行时添加,由于 python的动态特性。

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

    【讨论】:

    • 好吧,我想我可能一直没想到。由于在__init__ 阶段我必须Bind 事件处理程序,我基本上要做的是包装__init__ 函数,以及在装饰器中动态添加一个方法到类来处理事件。让我看看我能想出什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 2020-04-01
    相关资源
    最近更新 更多