Puść, mamy trochę zmiennej x, początkowo x = 0.
.. Za każdym razem, gdy X zmienia swoje wartości od 0 do 1, kliknij przycisk A.
Za każdym razem, gdy X zmienia swoje wartości od 1 do 2, kliknij przycisk B
Za każdym razem, gdy X zmienia swoje wartości od 2 do 0, kliknij przycisk C
...

Jak to zrobić ?

1
Aman Agrawal 23 listopad 2020, 12:38

1 odpowiedź

Najlepsza odpowiedź

Oto prosty przykład, który aktualizuje x raz na sekundę i używa trace na zmiennej, aby wywołać przycisk naciśnij, gdy zostanie zaktualizowany, z określonym przyciskiem w zależności od nowej wartości.

#!/usr/bin/env wish

grid [ttk::button .a -text A -command {puts "Buttom A pushed"} -state active]
grid [ttk::button .b -text B -command {puts "Button B pushed"}]
grid [ttk::button .c -text C -command {puts "Button C pushed"}]

set x 0

proc update_gui {name _ _} {
    upvar $name v
    switch -- $v {
        0 { .c state !active; .a state active; .a invoke }
        1 { .a state !active; .b state active; .b invoke }
        2 { .b state !active; .c state active; .c invoke }
    }
}

proc update_x {} {
    variable x
    set x [expr {($x + 1) % 3}]
    after 1000 update_x
}

trace add variable x write update_gui
after 1000 update_x
3
Shawn 23 listopad 2020, 10:05