คือต้องการจะสร้าง bind ไปที่ฟังก์ชันหนึ่งโดยต้องการให้ฟังก์ชันั้นรับ 1 parameter ( รับ object ) เพื่อใช้ในการ set ค่าของ attribute ของ object นั้นๆ โดยปุ่มทุกปุ่มจะมี object เป็นของตนเอง ซึ่งแตกต่างกันทุกปุ่ม
เช่น
***(1)**** ปุ่มที่ 1 self.Bind(wx.EVT_BUTTON, self.test(obj1), self.for_buttonP2) ปุ่มที่ 2 self.Bind(wx.EVT_BUTTON, self.test(obj2), self.for_buttonP2) ... ปุ่มที่ x self.Bind(wx.EVT_BUTTON, self.test(objx), self.for_buttonP2)
def test(self,obj): ->สร้าง dialog รับค่าจาก user obj.set(ค่าจาก dialog) *********
***(2)**** self.Bind(wx.EVT_BUTTON, self.test, self.for_buttonP2) def test(self,evt): print "x" *********
- โปรแกรมที่ (1) ไม่สามารถ bind event ได้ - แต่ (2) สามารถใช้งานได้เพราะไม่มีการส่ง parameter ให้ function ที่ bind
-------------------------------------- >><<< มี trick ไหนไหมครับ ที่จะทำให้ส่ง obj ของปุ่มต่างๆ ไปให้กับฟังก์ชัน test PS. ไม่สามารถสร้าง ใช้ trick self.temp1 = obj1 , self.temp2=obj2 เพื่อเก็บค่าไว้ใช้ใน function test ได้ เพราะปุ่มต่างๆมีจำนวนที่ไม่แน่นอน
ขอบคุณครับ
ใช้ lambda ทำ lazy
sugree Mon, 25/08/2008 - 13:35
ใช้ lambda ทำ lazy evaluation