2012-12-28 41 views
0

我有稱爲msg.data數據陣列[2]其中,i已經使用發佈 - 訂閱我現在要將該數據傳遞到PlotCanvasExample類傳遞值到一個不同類

下面是其中i調用類

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到這個類

我是新來的蟒蛇那麼怎麼做這將是很好的解釋,所以我可以瞭解如何在下一次做到這一點

回答

1

您可以添加SetData方法來PlotCanvasExample類,也許用這個方法?

def setData(data): 
    self.data = data 

或者如果在創建對象時需要此參數,可以將此參數添加到PlotCanvasExample的init方法。

class PlotCanvasExample(plot.PlotCanvas): 
    def __init__(self,parent,id,size, data): 
0
class P...: 
    def __init__(self, parent, id, size, data): 
     self.data = data 
     ... 
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)) 

希望這有助於。

安德魯

0

參數需要被傳遞到一類應放置在__init__功能。

這裏是Classes

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這裏發佈代碼時會有所幫助。

:)