Поставете отметка в квадратче само ако не е избрано

Когато UI Scripting в Applescript, може да искате да поставите отметка в квадратче:

tell application "System Events"
  tell process "Example Process"
    click checkbox "Example Checkbox" of sheet 1 of window 1
  end tell
end tell

Това има проблем. Ако примерното квадратче за отметка вече е поставено, вие всъщност премахвате отметката от квадратчето. Как можете да "отметнете квадратчето само ако вече не е отметнато"?


person Roberto Aloi    schedule 13.03.2012    source източник


Отговори (2)


Различните елементи на потребителския интерфейс имат свойства, които можете да тествате. За квадратчетата за отметка свойството стойност ще бъде 1 или 0 в зависимост от това дали е отметнато или не, така че можете да използвате стойността директно или да я принудите към булева стойност, например:

tell application "System Events" to tell process "Example Process"
    set theCheckbox to checkbox "Example Checkbox" of sheet 1 of window 1
    tell theCheckbox
        if not (its value as boolean) then click theCheckbox
    end tell
end tell
person Community    schedule 13.03.2012

Отговорът от Red_menace не е напълно ясен, бихте могли да си помислите да направите такова нещо като това:

set theCheckbox to checkbox "Random order" of tab group 1 of window "Desktop & Screen Saver"
            tell theCheckbox
                if false then click theCheckbox -- if false does not reference the 'theCheckbox', it is simply doing nothing
            end tell

Тогава никога няма да изчисли клаузата if.

Затова промених на средната част на

set theCheckbox to checkbox "Change picture:" of tab group 1 of window "Desktop & Screen Saver"
        tell theCheckbox
            set checkboxStatus to value of theCheckbox as boolean
            if checkboxStatus is false then click theCheckbox                   
        end tell

И тогава проработи.

person Binarian    schedule 19.01.2013