Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向WindowCommand类添加动态参数_Python_Sublimetext3_Sublime Text Plugin - Fatal编程技术网

Python 向WindowCommand类添加动态参数

Python 向WindowCommand类添加动态参数,python,sublimetext3,sublime-text-plugin,Python,Sublimetext3,Sublime Text Plugin,问题 简而言之,下面的代码只在这样硬编码时才起作用 class GetWindowCommand(sublime_plugin.WindowCommand): #NEED VARIABLE INSTEAD OF THE HARDCODED "qv" string sublime.active_window().run_command("get_window",{"qualifier": "qv"})

问题

简而言之,下面的代码只在这样硬编码时才起作用

class GetWindowCommand(sublime_plugin.WindowCommand):

    #NEED VARIABLE INSTEAD OF THE HARDCODED "qv" string
    sublime.active_window().run_command("get_window",{"qualifier": "qv"})
    
    def __init__(self,window):
        self.window=window

    def run(self,qualifier):
        self.projectFolders(qualifier)

    def projectFolders(self,qualifier):
        print(qualifier)

print(GetWindow(sublime_plugin.WindowCommand).results())
我的目标是加载插件时,它读取项目文件夹并根据文件夹查找特定文件。因此,我需要访问外部变量以及WindowCommandClass

在执行
print(WindowCommandClass)
时,我注意到它用self、window变量填充了所有的方法,并且一切正常

理论上,我认为我可以引入如下所示的变量

qualifier="qv"
print(WindowCommandClass.projectFolders(qualifier))

但是,向该类上的任何方法引入参数似乎会破坏WindowCommandClass中的self和window参数。我使用python&sublime文本api才几天,所以我不知道我是否遗漏了一些小东西,或者尝试了一些不可能的事情。有什么想法吗?

你的问题没有说明问题出在哪里。但是看看这个例子和我在其中所做的注释,也许会有所帮助

class GetWindowCommand(升华插件.WindowCommand):
#下面的调用不应该出现在插件的任何地方
#除非出于某种原因,您希望重新启动插件:
#sublime.active_window().run_命令(“get_window”,{“qualifier”:“qv”})
def运行(自我,限定符=无):
“”“运行插件时由升华文本调用。”“”
#self.window是由Sublime设置的-不要在_init__;方法中设置它。
#“qualifier”变量将保存“qualifier”参数中的任何内容
#当插件启动时,例如我下面的例子中的“foo”,
#如果插件启动时未设置“qualifier”参数,则为无。
project\u data=self.window.project\u data()
如果不是项目数据:
返回
project\u folders=project\u data.get(“folders”,[])
如果不是项目文件夹:
打印(“未设置任何项目文件夹”)
返回
对于项目_文件夹中的文件夹:
打印(文件夹)
您可以通过在用户密钥文件中分配密钥绑定来启动插件:

{ "keys": ["ctrl+f0"], "command": "get_window", "args": {"qualifier": "foo" } },

如果有人想在Sublime Text 3插件中将值传递给类

给一个刚开始的班级

class GetWindow(sublime_plugin.WindowCommand)

    def __init__(self,window):
        self.window=window

    def results(self)
        return("just testing")
我打错电话了

print(GetWindow().results())
我要做的就是像这样为类提供函数

class GetWindowCommand(sublime_plugin.WindowCommand):

    #NEED VARIABLE INSTEAD OF THE HARDCODED "qv" string
    sublime.active_window().run_command("get_window",{"qualifier": "qv"})
    
    def __init__(self,window):
        self.window=window

    def run(self,qualifier):
        self.projectFolders(qualifier)

    def projectFolders(self,qualifier):
        print(qualifier)

print(GetWindow(sublime_plugin.WindowCommand).results())
现在,为了得到原始帖子中提到的变量,我可以这样做

qualifier='qv'
results=SublimeID(sublime.window,qualifier).results()
同时修改类和方法以包含变量

def __init__(self,window,qualifier):
    self.qualifier=qualifier

def results(self)
    qualifer=self.qualifier
    # You can now work with this external variable #

我确实解决了我的问题,但你的例子非常好,值得参考,谢谢!