Установите тайм-код в AppleScript - PullRequest
0 голосов
/ 26 февраля 2020

Я использую AppleScript для удаленного Aegisub, чтобы сдвинуть временную шкалу субтитров на время. Пожалуйста, смотрите изображение. вот окно "shift by".

вот код, который я использую:

tell application "Aegisub"
    activate
    delay 0.1
end tell
tell application "System Events"
    tell process "Aegisub"
        keystroke "i" using command down   --cmd+i open "shift by" window
        delay 0.3
        click radio button "Time: " of window "Shift Times"   --choose shift by time not frames
        delay 0.3
        set the value of text field 1 of window "Shift Times" to "0:00:00.20" --set up shift how long time
        click radio button "Forward" of window "Shift Times"    --forward or backward
        click radio button "Selection onward" of group "Affect" of window "Shift Times"
        delay 0.3
        click button "OK" of window "Shift Times"
    end tell
end tell

обратите внимание на строку:

set the value of text field 1 of window "Shift Times" to "0:00:00.20"

Это изменяет значение на экране текстового поля 1 на «0: 00: 00.20». Но на самом деле он сместит время на последнее использованное вами значение.
Если вы введете «0: 00: 00.20» с клавиатуры вручную, оно сместится на время «0: 00: 00.20». Только эта строка не работает здесь. Похоже, это связано с форматом временного кода. Обратите внимание, что временным кодом, используемым приложением, является «0: 00: 00.20», а не «0: 00: 00: 20». Надеюсь, кто-нибудь может мне помочь.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Наконец-то я нашел ответ. Мне нужно использовать нажатие клавиши для ввода значения один ди git на один ди git, как то, что я делаю с клавиатурой. И структура «конец и конец» для кнопки «ОК» в ответе @Ted Wrigley вдохновила меня. Здесь правильный код

tell application "Aegisub"
    activate
    delay 0.1
end tell
tell application "System Events"
    tell process "Aegisub"
        set stime to "0000020"

        keystroke "i" using command down --cmd+i open "shift by" window
        delay 0.3
        click radio button "Time: " of window "Shift Times" --choose shift by time not frames
        delay 0.3

        tell text field 1 of window "Shift Times"
            set focused to true
            keystroke stime
        end tell

        click radio button "Forward" of window "Shift Times" --forward or backward
        click radio button "Selection onward" of group "Affect" of window "Shift Times"
        delay 0.3
        click button "OK" of window "Shift Times"
    end tell
end tell

обратите внимание, что формат временного кода на экране - «0: 00: 00.20», но формат stime должен быть «0000020».

0 голосов
/ 26 февраля 2020

Когда вы вводите значение в поле ввода текста (в зависимости от внимательности человека, который запрограммировал интерфейс), значение может не отправляться из интерфейса в базовую модель до тех пор, пока поле ввода текста не потеряет фокус : например, когда набрана клавиша return, щелкает другой элемент пользовательского интерфейса. Это смещение фокуса может произойти, а может и не произойти (или не произойти таким же образом), когда вы создаете сценарий интерфейса, поэтому вы можете вызвать его напрямую, например:

    set the value of text field 1 of window "Shift Times" to "0:00:00.20" --set up shift how long time
    click radio button "Forward" of window "Shift Times" --forward or backward
    click radio button "Selection onward" of group "Affect" of window "Shift Times"
    delay 0.3
    tell button "OK" of window "Shift Times"
        set focused to true
        click
    end tell
...