在这个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
为什么我会得到这个结果?我可以使用输入面板作为读取参数的提示,如果是,如何?
答案 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
语句。