2017-09-27 68 views
0

如何從另一個類調用變量,我得到了兩個類,一個獨立於另一個類,但是如果第一個類中發生了什麼,我需要在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

回答

1

如果我理解正確的需要,您可以通過一流'實例作爲另一個類'的方法的參數,在那裏你可以改變它。

這裏是一個例子。

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 

因此,您可以讀取或更改另一個類中的值。