0

我正在尝试在 wxpython 中使用 xrc 资源。这很好,但是一个很大的“不”在哪里 - 没有来自 xrc 的 wxFrame 类加载的自动完成。还有其他从 xrc 类加载的。

这是对的还是我正在做某事?

这是代码的一部分,例如:

import wx
from wx import xrc

class MyApp(wx.App):
    def OnInit(self):
        if os.path.exists("phc.xrc"):
            self.res = xrc.XmlResource("phc.xrc")

            self.frame = self.res.LoadFrame(None, 'MyFrame')
            self.list_box = xrc.XRCCTRL(self.frame, "list_box_1")
            self.notebook = xrc.XRCCTRL(self.frame, "Notebook")
            self.StatusBar= xrc.XRCCTRL(self.frame, "MFrame_statusbar")
            self.list_ctrl= xrc.XRCCTRL(self.frame, "list_ctr_1")
4

2 回答 2

0

好吧,自动完成功能的好坏完全取决于您使用的编辑器/IDE。您没有指定您使用什么来编写 python 脚本,但根据个人经验,我会说这可能是真的,没有自动完成功能。

我过去使用过 Eclipse/PyDev、Spyder、SPE 和 PyCharm,但它们都没有显示出自动完成使用 XRC 创建的小部件的能力。您仍然可以尝试让 Python 的 Emacs 自动完成功能工作并在那里尝试,但我怀疑它会工作。

我没有发现这是一个特别的障碍,但我猜每个人都不一样。希望这能回答你的问题。

于 2013-03-24T19:17:37.050 回答
0

是的,自动完成在这里不起作用,因为我们的代码不知道 xrc 将返回什么。您的代码仅在运行时才了解变量的类型(在本例中为帧)。

而且,不幸/幸运的是,我们无法将“类型”分配给 Python 中的变量以使自动完成功能正常工作。

但是在 Eclipse + PyDev 插件中

您可以添加此语句以使自动完成工作:

断言 isinstance(self.frame, wx.Frame)

自动完成在此声明之后起作用。

于 2013-07-25T03:25:04.347 回答