Автозаполнение в 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 работать и попробовать его там, но я сомневаюсь, что это сработает.

Я не нашел в этом особой помехи, но, думаю, все разные. Надеюсь, это ответит на ваш вопрос.

Другие вопросы по тегам