1

私はそう見えるクラスを1つ持っています:

class RSA:
 def encode(self,gui): 
    print "decoding started"

別のクラスにあるボタンを押したときに、別のクラスからエンコード関数を呼び出したい。エンコード関数にパラメータが1つしかない場合は、それをうまく行うことができます-self。
私はそうします:

Class GUI:
 self.parameter=8 # parameter which I want to pass
 def method(self):
  encode = Button(frame,command=rsa.encode)

そしてそれはうまく機能します(encode関数にデフォルトパラメータが1つしかない場合-self)。

しかし、関数rsa.encodeにまだ1つのパラメーターを渡す必要があります。私がそれを渡そうとするとそう:

self.encode = Button(frame,command=rsa.encode (self.parameter) )
-インタプリタがこの行に到達するとすぐに呼び出され、二度と呼び出されません。

しかし、それは私が望むものではなく、ボタンが押されたときにのみ呼び出されるようにしたいのです。これはC++で簡単に実行できますが、ここでは、そこでは機能しないのではないかと思います。

返信ありがとうございます!

4

1 に答える 1

3

クロージャを作成するために無名関数が必要です:

self.encode = Button(frame,command=lambda : rsa.encode (self.parameter) )
于 2012-11-19T15:26:34.490 に答える