2012-07-29 97 views
0
def createMenu(self, menuData): 
     menu = wx.Menu() 
     for eachItem in menuData: 
      if len(eachItem) == 2: 
       label = eachItem[0] 
       subMenu = self.createMenu(eachItem[1]) 
       menu.AppendMenu(wx.NewId(), label, subMenu) 
      else: 
       self.createMenuItem(menu, *eachItem) 
     return menu 

在这段代码中,返回值是menu,它指的是对象wx.Menu()。这个对象是一个局部变量。当这个函数调用结束时它将被删除。但是本书中的下一个代码是 menuBar.Append(self.createMenu(menuItems), menuLabel)createMenu(menuItems)它是如何工作的?我的意思是menu指向的对象已被删除。关于python的返回值

+4

你在说什么? Python中没有静态变量,函数不返回变量,它们返回值(几乎任何语言,不仅仅是Python)。 – delnan 2012-07-29 10:55:59

+0

'menuBar'不是静态的,当函数超出范围时会消失。我不确定是什么给了你这个印象。 – 2012-07-29 11:30:34

+0

是什么让你觉得'menuBar'是一个静态变量(Python没有)?它只是函数的局部变量,当函数返回时它会“消失”。 'SetMenuBar()'可以在_it_返回之前复制其当前值。 – martineau 2012-07-29 15:43:30

回答

2

我不是100%确定我理解你的问题。但你可以试试以下内容:

menuBar = wx.MenuBar() 
print menuBar.__class__