Автозаполнение в wxpython при загрузке из xrc
Я пытаюсь работать с ресурсом xrc в wxpython. Это хорошо, но где есть одно большое "нет" - нет автозаполнения loadet класса wxFrame из xrc. И другие загруженные из классов 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")
2 ответа
Да, автозаполнение здесь не сработает, так как наш код не знает, что вернет xrc. Ваш код узнает о типе переменной (в данном случае, фрейма) только во время выполнения.
И, к сожалению / к счастью, мы не можем присвоить 'тип' переменной в Python для работы автозаполнения.
Но в Eclipse + плагин PyDev
Вы можете добавить этот оператор для автозаполнения для работы:
Утверждение экземпляра (self.frame, wx.Frame)
Автозаполнение работает после этого утверждения.
То, насколько хороша функция автозаполнения, полностью зависит от того, какой редактор /IDE вы используете. Вы не указали, что вы используете для написания скриптов на Python, но из личного опыта я бы сказал, что, вероятно, это правда, что автозаполнения нет.
В прошлом я использовал Eclipse/PyDev, Spyder, SPE и PyCharm, и все они не показали возможности автозаполнения виджетов, созданных с помощью XRC. Вы все еще можете попытаться заставить автозаполнение Emacs для Python работать и попробовать его там, но я сомневаюсь, что это сработает.
Я не нашел в этом особой помехи, но, думаю, все разные. Надеюсь, это ответит на ваш вопрос.