【问题标题】:How to pass args to an instance of sublime_plugin.WindowCommand?如何将 args 传递给 sublime_plugin.WindowCommand 的实例?
【发布时间】:2015-04-27 13:36:49
【问题描述】:

我为sublime text 3创建一个插件,设计的Command Palette.sublime-commands如下:

[
{
    "caption": "Function 1", 
    "args": {parameter:"y"}, 
    "command": "generalfunc"
}, 
{
    "caption": "Function 2", 
    "args": {parameter:"n"}, 
    "command": "generalfunc"
}
]

实际上,我想将 args 传递给下面的 sublime_plugin 实例:

class GeneralFuncCommand(sublime_plugin.WindowCommand):
    def __init__(self, parameter=None):
        self.parameter = parameter
        super(GeneralFuncCommand, self).__init__()

    def run(self):
        if self.parameter =='y':
            do something
        elif self.parameter =='n':
            do something else
        else:
            pass

将 args 传递给 GeneralFuncCommand 类的正确方法是什么?提前致谢。

【问题讨论】:

    标签: python sublimetext3 sublime-text-plugin


    【解决方案1】:

    我是一个插件/python 新手,但我将一些适合我的东西放在一起。

    “**args”似乎是“def”行中的关键。似乎是通过 args['myparamnamehere'] 语法使所有其他参数可用的通配符。我已经看到其他脚本名称参数为“**kwargs”,所以也许你可以在谷歌上搜索更多示例(我找到了大量示例,但没有关于它的方式或原因的文档)。可能有更好的方法,但这是我在自己的项目上工作几个小时后发现的,所以我只是坚持下去。

    class dgReplaceLibCommand(sublime_plugin.TextCommand):
        def run(self, edit, **args):
            if (args['replaceSet'] == "CFML to cfScript"):
                self.cfml_to_cfscript(edit)
    

    我猜你的 def 行需要看起来像这样......

    def __init__(self, **args):
    

    然后你会像这样访问你的参数(再次猜测)......

    self.parameter = args['parameter']
    

    此外,您可能需要在配置中的关键“参数”周围加上引号。在未引用的示例中,我没有看到太多。即...

    "args": {"parameter":"y"}, 
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2020-12-05
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多