8
我使用Jython中的Swing來製作GUI。 Jython的事件處理似乎特別優雅,只需設置使用Jython和Swing處理事件
JButton("Push me", actionPerformed = nameOfFunctionToCall)
但是,在類中嘗試同一件事變得困難。天真地試圖
JButton("Push me", actionPerformed = nameOfMethodToCall)
或
JButton("Push me", actionPerformed = nameOfMethodToCall(self))
從類不工作的GUI的施工方法,因爲方法的第一個參數被稱爲應自我,爲了訪問類的數據成員,另一方面,不可能通過AWT事件隊列將任何參數傳遞給事件處理程序。唯一的選擇似乎是使用lambda(截至http://www.javalobby.org/articles/jython/決定),導致這樣的事情:
JButton("Push me", actionPerformed = lambda evt : ClassName.nameOfMethodToCall(self))
它的工作原理,但優雅的走了。所有這些僅僅是因爲被調用的方法需要從某個地方引用self。有沒有其他解決方法?
哇,這是簡單的!謝謝。這種方法似乎將自我參照和事件都發送給方法,因此需要將其定義爲: def nameOfMethodToCall(self,evt) 這很好! – 2009-02-07 08:56:32