2

答えが見つからない一般的な質問があるので、皆さんが助けてくれることを願っています. 私は 3 つのパラメーターを取る関数を持っています。以下は私が持っているものの例です。

def someFunction(self, event, string):

   do stuff ..

self.canvas.bind("<Button-1>", self.someFunction("Hello"))

これを実行すると、someFunction 引数を 3 ではなく 2 に渡したというエラーが表示されます。理由はわかりません..

4

2 に答える 2

12

ここでは、の結果をバインドしていますsomeFunction(またはとにかくしようとしています)。Python が の結果を取得しようとすると、実際には 2 つの明示的な引数が必要な場合に 1 つの引数 ( )someFunctionを渡すだけで呼び出されるため、これは失敗します。おそらく次のようなものが必要です。"Hello"someFunction

self.canvas.bind('<Button-1>',lambda event: self.someFunction(event,"Hello"))

これにより、正しい引数を渡す新しい関数 ( によって作成され、 によってlambdaラップされる) がバインドされます。self.someFunction

于 2013-03-18T14:06:40.117 に答える
0

または、

def someFunction(self, string):
   def fn(*arg)
      print string
   return fn


self.canvas.bind("<Button-1>",self.someFunction("Hello!"))
于 2014-02-10T22:59:13.210 に答える