set属性和on_done方法

时间:2012-09-03 02:12:52

标签: python sublimetext2

在这个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

如果我在输入面板中输入“Jack”,我希望

run: Jack

然而我实际上得到:

run: None
on_done: Jack

为什么我会得到这个结果?我可以使用输入面板作为读取参数的提示,如果是,如何?

1 个答案:

答案 0 :(得分: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语句。