Как именно поведение hier_block отличается от поведения sync_block в GNU Radio?

Это продолжениеэтот вопрос. Я понимаю, что мы не можем получить доступinput_items в__init__ sync_block, но мы можем сделать это вhier_block (например.Вот). Я хотел добавить панель в верхней рамке блока, что можно сделать, только назначив панельself.win в__init__ (как в примере hier_block). Если я попытаюсь назначить панель дляself.win внутри рабочей функции sync_block он выдает ошибку:Объект 'xyz' не имеет атрибута 'win', Хотя это работает, если я назначаю панельself.win внутри__init__ из sync_block (вот почему я хотел получить доступinput_items внутри__init__ на первом месте)

В ответ Маркусу ответ

Если яхочу нарисуйте график на wxPanel, а затем поместите панель в верхний блок wxFrame. Вот пример -

class xyz(gr.sync_block):
    """
    docstring for block add_python
    """
    def __init__(self,parent):
        .......
        gr.sync_block.__init__(self,
            name="xyz",
            in_sig=[numpy.float32,numpy.float32],
            out_sig=None)
        self.win = xyzPlot(parent,input_items) # Comment 1 -> this will not work as I dont have access to input_items here


    def work(self, input_items, output_items):
        ..........
        ..........
        self.win = xyzPlot(parent,input_items) # Comment 2 -> this doesnt work as Marcus says "Only __init__ block has the graphical framework's window object set as property." 
        ..........
        ..........

class xyzPlot(wx.Panel):
    def __init__(self, parent , input_items):
        wx.Panel.__init__(self , parent , -1 ,size=(1000,1000))
        ..............
        ..............
        #plots a plot on the panel depending on the input_items
        ..............
        ..............

Проверьте оба комментария, которые я добавил в коде выше. Поскольку оба способа не работают, как делать то, что яхочу тот?

Ответы на вопрос(1)

Ваш ответ на вопрос