0

sublimetextプラグインのこのPythonコードでは:

class PersonCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.name = None
        self.view.window().show_input_panel("Name", "", self.on_done, None, None)
        print "run: ", self.name

    def on_done(self, value):
        self.name = value
        print "on_done: ", self.name

入力パネルに「ジャック」と入力すると、

run: Jack

しかし、私は実際に次のようになります。

run: None
on_done: Jack

なぜこの結果が得られるのですか?入力パネルを引数を読み取るためのプロンプトとして使用できますか?その場合、どのように使用しますか?

4

1 に答える 1

1

この場合、on_done関数はコールバックです。この行が実行されるとき:

    self.view.window().show_input_panel("Name", "", self.on_done, None, None)

*すぐにon_doneを呼び出さない*。self.on_doneこの関数は、値が入力されると呼び出されるメソッドとして設定されます。つまり、その後の行は、print "run: ", self.name値が入力される前に発生します。

関数on_doneは後で発生します(ユーザーが値を入力するタイミングに応じて、数秒または数分後になる可能性があります)。そうして初めて、値が設定され、print "on_done: ", self.nameステートメントが発生します。

于 2012-09-03T02:53:44.070 に答える