从另一个类中调用self.variable

问题描述:

如何从另一个类调用变量,我得到了两个类,一个独立于另一个类,但是如果第一个类中发生了什么,我需要在gui类中实现标签(self.lbl)并更改这是价值。从另一个类中调用self.variable

class MyCalendar(wx.Frame): 

    def __init__(self, *args, **kargs): 
     wx.Frame.__init__(self, *args, **kargs) 
     self.cal = CalendarCtrl(self, 10, wx.DateTime.Now(),style= CAL_MONDAY_FIRST) 
     self.cal.Bind(wx.adv.EVT_CALENDAR, self.OnDate) 

    def OnDate(self,event): 

     if dateStatus: 
      global beginDate 
      tmp = datetime.datetime.strptime(str(self.cal.GetDate()), '%a %b %d %X %Y').strftime('%Y-%m-%d') 
      beginDate = datetime.datetime.strptime(tmp, '%Y-%m-%d').date() 
      #DataList.renewlabels()  

     else: 
      global endDate 
      tmp = datetime.datetime.strptime(str(self.cal.GetDate()), '%a %b %d %X %Y').strftime('%Y-%m-%d') 
      endDate = datetime.datetime.strptime(tmp, '%Y-%m-%d').date() 
      #DataList.renewlabels()  
     wx.Window.Close(self) 

class DataList(wx.Frame,): 
    def __init__(self, parent, id, title): 
     wx.Frame.__init__(self, parent, id, title, size=(830, 440)) 
     self.Maximize(True) 
     panel = wx.Panel(self, -1) 

     uber_sizer = wx.BoxSizer(wx.VERTICAL) 
     top_sizer = wx.BoxSizer(wx.HORIZONTAL) 


     right_sizer = wx.BoxSizer(wx.VERTICAL) 

     #Labels 
     self.beginlbl = wx.StaticText(panel ,-1,style = wx.ALIGN_CENTER) 
     font = wx.Font(18, wx.ROMAN, wx.ITALIC, wx.NORMAL) 
     self.beginlbl.SetLabel(str(beginDate)) 
     self.beginlbl.SetFont(font) 
     self.endlbl = wx.StaticText(panel ,-1,style = wx.ALIGN_CENTER) 
     self.endlbl.SetLabel(str(endDate)) 
     self.endlbl.SetFont(font) 
     callCalendar() 

def callCalendar(): 
    app = wx.App() 
    frame = MyCalendar(None) 
    frame.Show() 
    app.MainLoop()    


app = wx.App() 
dl = DataList(None, -1, 'Radar Report') 
dl.Show() 
app.MainLoop() 

这是一点点的代码,以了解我有什么。

编辑: 我错过了一个方法DataList控件类,你可以看到我把它称为MyCakendar.Ondate

def renewlabels(self) 
    self.beginlbl.SetLabel(str(beginDate)) 
+0

请给更多的信息:什么类需要触发对方的标签?你有什么尝试?什么是预期的输出 ? –

+0

我已尽力修复您的缩进。在将来发布Python代码时,请谨慎地重新制作缩进。 – khelwood

如果我理解正确的需要,您可以通过一流'实例作为另一个类'的方法的参数,在那里你可以改变它。

这里是一个例子。

class Class1(): 
    def __init__(self, a): 
     self.a = a 

class Class2(): 
    def change(self, instance): 
     instance.a = 4 

first = Class1(1) 
print first.a 

second = Class2() 
second.change(first) 

print first.a 

因此,您可以读取或更改另一个类中的值。