我正在尝试使用wxpython中的xrc资源。 它很好,但是一个大的“不” - 没有从xrc自动完成wxFrame类loadet。还有其他从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")
答案 0 :(得分:0)
嗯,自动完成功能的好坏完全取决于您使用的编辑器/ IDE。您没有指定用于编写python脚本的内容,但根据个人经验,我会说可能是真的,没有自动完成。
我过去使用过Eclipse / PyDev,Spyder,SPE和PyCharm,他们都没有显示使用XRC自动完成小部件的能力。您仍然可以尝试让Python的Emacs自动完成工作并在那里尝试,但我怀疑它会起作用。
我没有发现这是一个特别的障碍,但我想每个人都不一样。希望这能回答你的问题。
答案 1 :(得分:0)
是自动完成在这里不起作用,因为我们的代码不知道xrc将返回什么。您的代码仅在运行时才了解变量的类型(在本例中为框架)。
不幸的是,幸运的是,我们无法在Python中为变量分配'type'以使自动完成工作。
但是在Eclipse + PyDev插件中
您可以添加此语句以自动完成工作:
断言isinstance(self.frame,wx.Frame)
自动完成功能在此声明之后起作用。