0

我有一个名为 msg.data[2] 的数据数组,我在其中使用了 pubsub 我现在想将此数据传递到 PlotCanvasExample 类

这是我给班级打电话的地方

self.pubsubText.SetLabel("This is the Contact Map for the chain "+msg.data[0]+" in the PDB file "+msg.data[1])
    frame = self.GetParent()
    sizer = wx.BoxSizer(wx.VERTICAL)
    self.canvas = PlotCanvasExample(self,0, size=(100,100))
    sizer.Add(self.canvas,1,wx.EXPAND,0)

这是课程本身

class PlotCanvasExample(plot.PlotCanvas):
    def __init__(self,parent,id,size):
            plot.PlotCanvas.__init__(self,parent,id,style=wx.BORDER_NONE, size=(300,200))
            self.data = [(1,2),(23,2)]
            line = plot.PolyMarker(self.data)
            gc = plot.PlotGraphics([line],"CM view", "x-axis","y axis")
            self.Draw(gc, xAxis=(0,50), yAxis=(0,50))

我如何将变量 msg.data 传递给这个类

我是python新手,所以解释一下如何做会很好,这样我下次就可以理解如何做

4

4 回答 4

1

您可以将 setData 方法添加到 PlotCanvasExample 类并使用此方法吗?

def setData(data):
    self.data = data

或者如果您在创建对象时需要此参数,您可以将此参数添加到 PlotCanvasExample 的 init 方法中。

class PlotCanvasExample(plot.PlotCanvas):
    def __init__(self,parent,id,size, data):  
于 2012-12-28T14:35:10.600 回答
0
class P...:
    def __init__(self, parent, id, size, data):
        self.data = data 
        ...
于 2012-12-28T14:35:25.417 回答
0

试试这个代码...

self.pubsubText.SetLabel("This is the Contact Map for the chain "+msg.data[0]+" in the PDB file "+msg.data[1])
    frame = self.GetParent()
    sizer = wx.BoxSizer(wx.VERTICAL)
    self.canvas = PlotCanvasExample(self,0, size=(100,100), msg.data)
    sizer.Add(self.canvas,1,wx.EXPAND,0)

class PlotCanvasExample(plot.PlotCanvas):
    def __init__(self,parent,id,size, msgdata):
            self.msgdata = msgdata
            plot.PlotCanvas.__init__(self,parent,id,style=wx.BORDER_NONE, size=(300,200))
            self.data = [(1,2),(23,2)]
            line = plot.PolyMarker(self.data)
            gc = plot.PlotGraphics([line],"CM view", "x-axis","y axis")
            self.Draw(gc, xAxis=(0,50), yAxis=(0,50))

希望这可以帮助。

安德鲁

于 2012-12-28T14:37:06.090 回答
0

需要传递给类的参数应该放在__init__函数中。

这是关于类的 Python 文档

代码行def __init__(self,parent,id,size):是您需要更改以添加新参数的内容。

下次创建此类时,您可以在self.canvas - PlotCanvasExample()

例子:

班级:

class PlotCanvasExample(plot.PlotCanvas):
    def __init__(self,parent,id,size,data):

代码:

self.canvas = PlotCanvasExample(self,0, size=(100,100), msg.data[2])

如果您是 Python 新手,我建议您查看文档。另请查看PEP8,它会在此处发布代码时有所帮助。

:)

于 2012-12-28T14:38:07.663 回答