如何使用wxPython中的AddSubclassFactory?

use*_*192 6 python wxwidgets wxpython wxruby

我无法在网上找到有关如何使用此方法的任何示例.我认为这可能是我将使用的东西.有人能为我提供一个如何使用这种方法的例子吗?

http://wxpython.org/docs/api/wx.xrc.XmlResource-class.html

Wul*_*ram 4

根据源代码,我相信这就是您要做的事情。

源代码: http://wxwidgets2.8.sourcearchive.com/documentation/2.8.7.1/classxrc_1_1XmlResource_4a0466d7ef7ac98ef7a9b8135a0c9339.html

def AddSubclassFactory(*args, **kwargs):
    """AddSubclassFactory(XmlSubclassFactory factory)"""
    return _xrc.XmlResource_AddSubclassFactory(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

所以您可以看到它正在寻找 XmlSubclassFactory 类型的对象。从文档(http://wxpython.org/docs/api/wx.xrc.XmlSubclassFactory-class.html)我们发现......

XmlSubclassFactory  __init__(self)
Run Code Online (Sandbox Code Playgroud)

我们可以看到 XmlSubClassFactory 的构造函数不带参数。因此,我们创建一个 XmlSubclassFactory 对象,并创建一个资源来添加 SubClassFactory。

import wx
from wx import xrc

scf = xrc.XmlSubClassFactory()
resource = xrc.XmlResource("resource.xrc")
resource.AddSubclassFactory(scf)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到Python 的例子。然而,我认为 Perl 的模拟非常接近。来自http://permalink.gmane.org/gmane.comp.lang.perl.wxperl/477

Wx::XmlResource::AddSubclassFactory( MyFactory->new ); // perl
Run Code Online (Sandbox Code Playgroud)

这与我们正在做的事情非常相似。因此,在阅读源代码和该示例之间,我相信该代码片段是一个很好的起点。祝你好运!