【问题标题】:SikuliX cannot call makeOpts()SikuliX 无法调用 makeOpts()
【发布时间】:2021-06-12 08:14:55
【问题描述】:

我正在 Windows 上开发 sikulixide-2.0.5。现在我想利用用户属性写入/读取功能来实现应用程序参数的持久化,所以我正在学习作为参考的一部分:https://sikulix-2014.readthedocs.io/en/latest/globals.html#saveOpts

问题是,无论我用 Opt 的固定术语调用任何与持久性相关的 API,例如 makeOpts() ,引擎都会在出现错误后继续回答我,我如何让它工作?

[error] AttributeError ( 'org.sikuli.script.support.RunTime' 对象有 没有属性'makeOpts')

参考代码在这里,很简单:

from sikuli import *

def trialOpts():
    obj = makeOpts()
    return

trialOpts()

相比之下,click()、find() 等其他 API 工作正常,没有 AttributeError 消息,这意味着 Sikuli 的主引擎正在运行。

既然这些是Sikuli的原生API,按照我的理解,应该不需要导入任何模块吧?为了确保这一点,我在 Github 上研究了 Sikuli 的位源代码,带有术语 Opt 的 API 完全在 Sikuli.py 中定义:

到目前为止,我的线索已经不多了。请你帮忙。

【问题讨论】:

    标签: jython sikuli sikuli-script sikuli-ide sikuli-x


    【解决方案1】:

    我再次查看了最新发布的代码,发现有其他可用的首选项处理方法(请参阅:org.sikuli.basics.PreferencesUser)

    from sikuli import *
    from org.sikuli.basics import PreferencesUser
    
    def trialOpts():
        obj = PreferencesUser.get()
        obj.put("foo","bar")
        print obj.get("foo","bart")
        return
    
    trialOpts()
    

    【讨论】:

      【解决方案2】:

      那些“*Opts”便捷方法似乎在 2.0.5 版本中不存在。看起来它们被重构了。

      要查看这些方法的作用(并可能在 jython 中重新创建它们),请参阅:

      https://www.javatips.net/api/SikuliX-2014-master/API/src/main/java/org/sikuli/script/RunTime.java

      另外,如果你拉一个 pre-2.0.0 标签,看起来 github 项目有代码:

      https://github.com/RaiMan/SikuliX1

      【讨论】:

      • 刚刚签出存储库,我看到选项处理功能在 2.0.5 上仍然存在。
      • 我只在 2.0.5 的 Sikuli.py 中找到了这些方法。然而,它们并未反映在 RunTime 类中。您可以采用这些方法的先前定义(2.0.0 之前)并自己实现它们。例如,“makeOpts()”基本上就是“return new Properties();”
      • 你可能是对的,根据我在 Github 上提出的问题的回应,作者说这个功能在 2.0.5 中丢失了。抱歉,我不知道 Java 运行时。
      猜你喜欢
      • 1970-01-01
      • 2017-05-07
      • 2021-02-11
      • 2018-08-27
      • 2017-11-11
      • 2015-05-19
      • 1970-01-01
      • 2019-05-04
      • 2017-07-26
      相关资源
      最近更新 更多