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 回答