Форум сайта python.su
 
							 0
  0   
								
								Сейчас есть такой код:
self.wTree = gtk.glade.XML(design)
self.window = self.wTree.get_widget("window1")
self.scr_list = self.wTree.get_widget("scr_list")
self.description = self.wTree.get_widget("Description")
self.person = self.wTree.get_widget("person_ctrl")
self.project = self.wTree.get_widget("project_ctrl")
self.system = self.wTree.get_widget("system_ctrl")
self.type = self.wTree.get_widget("type_ctrl")
self.priority = self.wTree.get_widget("priority_ctrl")
self.startdate = self.wTree.get_widget("startdate_ctrl")
self.author = self.wTree.get_widget("author_ctrl")
self.responsible = self.wTree.get_widget("responsible_ctrl")
self.controller = self.wTree.get_widget("controller_ctrl")
		dic = { "window1" : self.window,
			    "scr_list"   : self.scr_list,
                             ......
		}
		self.bind_controls(dic)Офлайн
 
							 1
  1   
								
								Ну так записывайте :)
Просто вместо 
self.bind_controls(dic)
filter(lambda x:setattr(self,x[0],x1),dic.items())
Офлайн
 
							 0
  0   
								
								брымс. а кто будет заводить все эти переменые:  self.window, self.scr_list
Питон будет ругаться, что переменная неизвестная, когда будет создавать словарь.
Отредактировано (Ноя. 9, 2008 00:03:13)
Офлайн
 
							 0
  0   
								
								Согласен.  В gtk-glade подобным образом можно навесить события:
		dic = { "on_scr_list_row_activated" : self.on_scr_select,
			"on_scr_list_cursor_changed" : self.on_scr_activate
		}
		self.wTree.signal_autoconnect(dic)Офлайн
 
							 1
  1   
								
								Я имел в виду код вверху.
Такой код, например, работает:
class New():
def __init__(self):
self.bb = "aaa"
self.ff = "fff"
dic = { "kkk": self.bb,
"qqq": "qqqq"}
filter(lambda x:setattr(self,x[0],x[1]),dic.items())
print New().kkk
    dict = { 'window': self.wTree.get_widget("window1"),
    'scr_list':self.wTree.get_widget("scr_list"),
    'description' : self.wTree.get_widget("Description")
    }
   filter(lambda x:setattr(self,x[0],x1),dic.items())connect_params(self, wTree, dict)
Отредактировано (Ноя. 9, 2008 00:35:40)
Офлайн
 
							 0
  0   
								
								Работает. Спасибо.
Офлайн
 
							 0
  0   
								
								А можешь пояснить, почему filter, а не, скажем, apply?
Мы же применяем функцию к каждому элементу списка.
Офлайн
 
							 2
  2   
								
								demasКстати, скорее всего, Ferroman имел ввиду `map`, поскольку `filter` тут как-то не очень к месту, хотя по стечению обстоятельств логику не рушит:-)
А можешь пояснить, почему filter, а не, скажем, apply?
Мы же применяем функцию к каждому элементу списка.
Офлайн
 
							 1
  1   
								
								apply 
Deprecated since release 2.3. Use the extended call syntax with *args  and **keywords instead.
Я ей никогда не пользовался. Да и судя по описанию эта функция просто передаёт параметры функции, то есть весь список, а не по-элементно, как надо.
Может правильнее вообще map использовать.
Офлайн
 
							 1
  1   
								
								Я так гляжу, я тут не один полуночник ;)
Офлайн