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 #
我确实解决了我的问题,但你的例子非常好,值得参考,谢谢!