簡體   English   中英

從另一個類調用self.variable

[英]Calling self.variable from another class

我怎么能從另一個類中調用變量,我得到了兩個彼此獨立的類,但是如果在第一類中發生了某些事情,我需要在gui類中到達標簽(self.lbl)並更改其值。

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))

如果我正確理解了您的需求,則可以將第一個類的實例作為參數傳遞給另一個類的方法,您可以在其中進行更改。

這是一個例子。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM