- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是 this 的延续问题。据我所知,我们无法在sync_block的__init__
中访问input_items
,但我们可以在hier_block
中这样做(例如 here )。我想在顶部 block 框架上添加一个面板,这只能通过将面板分配给 __init__
中的 self.win
来完成(如 hier_block 示例中所示)。如果我尝试将面板分配给sync_block的工作函数内的self.win
,则会出现错误:'xyz'对象没有属性'win'。虽然如果我将一个面板分配给sync_block的__init__
内部的self.win
,它就可以工作(这就是为什么我想访问内部的input_items
__init__
首先)
回应 Marcus 的回答
如果我想在wxPanel上绘制一个图,然后将面板放在top_block 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
..............
..............
查看我在上面代码中添加的注释。既然这两种方法都不起作用,那么如何做我想做的呢?
最佳答案
How exactly is hier_block 's behaviour different then that of a sync_block in GNU Radio?
您应该阅读guided tutorials GNU Radio 的内容对此进行了非常简洁的解释。你的问题内容与你的标题无关,所以我不会回答标题中的问题。
但是,您真正的问题是不同的:
当尝试在工作中设置 GUI 时,出现问题。
作为在另一个线程中给您的答案的延续:您不在 work
函数中进行设置。该方法仅用于信号处理。
在构建期间(即在 top_block
的 __init__
中)设置包括 GUI 在内的流程图。只有该 block 将图形框架的窗口对象设置为属性。
编辑:您想实现自己的绘图仪:
代码中您所说的注释
# Comment 2 -> this doesnt work as Marcus says "Only init block has the graphical framework's window object set as property."
是一个错误的引用。只有您的 top_block 有权访问 win 属性,因为这是该 top_block 的属性(而不是其他人的)。这是你在这里混淆的基本Python。
其他评论
Comment 1 -> this will not work as I dont have access to input_items here
表明您还不太了解 GNU Radio 的工作原理。您必须实现一个工作函数,该函数有一个参数 input_items
;显然,当您不在该函数中时,您无法访问另一个函数参数——这也是逻辑/编程语言的事情。
我在这里所能做的就是重复:阅读指导教程,并在尝试复杂的操作之前完成其中的所有练习。否则,即使你有高级问题,试图帮助你的人也必须解释基本的东西。没有办法首先熟悉如何使用 Python 为 GNU Radio 进行编程,并且指导教程(我是否提到过您应该阅读它们?)使这变得非常容易,因为您对 Python 有点熟悉。如果您不熟悉 python,请先访问 python.org 并完成 python2 教程。应该不会花很长时间。在你深入研究像 GNU Radio 这样使用大量面向对象范例的东西之前,你确实需要理解类、方法、构造函数、变量、参数、属性的概念。
我对你的问题的评论:
关于python - hier_block 的行为与 GNU Radio 中的sync_block 的行为究竟有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30703138/
我是一名优秀的程序员,十分优秀!