SikuliX не может вызвать makeOpts ()

Я работаю над sikulixide-2.0.5 в Windows. Теперь я хотел бы использовать функции записи / чтения свойств пользователя для реализации сохраняемости параметров приложения, так что я учусь как часть показанной ссылки: https://sikulix-2014.readthedocs.io/en/latest/globals.html#saveOpts

Вопрос в том, что бы я ни называл какой-либо связанный с постоянством API со сроком исправления Opt, например makeOpts (), движок продолжал бы отвечать мне на следующую ошибку: как мне заставить его работать?

[ошибка] AttributeError (объект 'org.sikuli.script.support.RunTime' не имеет атрибута 'makeOpts')

ссылочный код здесь, довольно простой:

from sikuli import *

def trialOpts():
    obj = makeOpts()
    return

trialOpts()

Напротив, другие API, такие как click (), find (), работают нормально без сообщения AttributeError, что означает, что основной движок Sikuli точно работает.

Поскольку это собственный API Sikuli, насколько я понимаю, он не должен импортировать какие-либо модули? Чтобы убедиться в этом, я изучил битовые исходные коды Sikuli на Github, API с термином Opt были точно определены там в Sikuli.py:

введите описание изображения здесь

Пока что у меня заканчиваются подсказки. Пожалуйста, не могли бы вы помочь?


person Ju-Hsien Lai    schedule 15.03.2021    source источник


Ответы (2)


Эти удобные методы * Opts, похоже, не существуют в версии 2.0.5. Похоже, они перестали существовать после рефакторинга.

Чтобы узнать, что делают эти методы (и, возможно, воссоздать их в jython), см .:

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

Кроме того, похоже, что в проекте github есть код, если вы вытащите тег до версии 2.0.0:

https://github.com/RaiMan/SikuliX1

person Curtis    schedule 15.03.2021
comment
Просто проверьте репозиторий, я видел, что функции обработки опций все еще существуют в 2.0.5. - person Ju-Hsien Lai; 16.03.2021
comment
Я нашел эти методы только в Sikuli.py для 2.0.5. Однако они не отражены в классе RunTime. Вы можете взять предыдущие определения этого метода (до 2.0.0) и реализовать их самостоятельно. Например, makeOpts () в основном возвращает новые свойства (); - person Curtis; 16.03.2021
comment
Вы, наверное, правы, отвечая на вопрос, который я поднял на Github, автор сказал, что эта функция была потеряна в 2.0.5. Извиняюсь, я понятия не имел о среде выполнения Java. - person Ju-Hsien Lai; 17.03.2021

Я еще раз взглянул на код самой последней версии, и есть альтернативные методы обработки предпочтений (см .: 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()
person Curtis    schedule 16.03.2021
comment
Несомненно, это хороший обходной путь. - person Ju-Hsien Lai; 17.03.2021