我目前正在嘗試創建一個會在dict中綁定事件動作對象的循環。 回調函數只是調用動作函數並打印參數。在循環中使用lambda表達式進行自動綁定
for binding, action in self.keyMap.revMap.items() :
print binding, action
self.top.bind(binding,
lambda event : self.callback(event, self.actionRep.__class__.__dict__[action]))
print self.top.bind()
在綁定,我得到這些日誌:
<Escape> toggleMenu -------------generated by the line "print binding, action"
<Return> toggleChat -------------generated by the line "print binding, action"
('<Key-Return>', '<Key-Escape>', '<Key>') ---generated by the line "print self.top.bind()"
上述事件動作夫婦是正確的。 然而,當事件發生時,我有這樣的:
<Tkinter.Event instance at 0x0000000002BB3988> <function toggleChat at 0x0000000002B60AC8>
<Tkinter.Event instance at 0x0000000002BB3948> <function toggleChat at 0x0000000002B60AC8>
是,無論是逃避和返回事件似乎是必然toggleChat ...
我有lambda表達式的一點經驗,但我希望爲每個循環創建一個新的無名函數。我錯了嗎?如果不是,問題在哪裏?
在此先感謝您的見解。
感謝您的深刻見解:)。 – aPythonJourney
@aPythonJourney - 當然。這是我認爲在蟒蛇之旅中幾乎每個人都會咬的東西之一。 – mgilson