Как именно поведение 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
..............
..............
Проверьте оба комментария, которые я добавил в коде выше. Поскольку оба способа не работают, как делать то, что яхочу тот?