Может ли кто-нибудь помочь мне в этой ситуации? Я пытаюсь создать графический интерфейс, который используется для демонстрации цвета всей матрицы RGB на холсте. К сожалению, GUI не отвечает, и он не меняет цвета, как ожидалось, до тех пор, пока цикл не будет завершен. Что-то не так? Я часто сталкиваюсь с этой проблемой, если я настраиваю виджет в цикле.Tk GUI не отвечает
package require Tk
package require math
proc changeColor {rM gM bM} {
for {set r 0} {$r<=$rM} {incr r} {
for {set g 0} {$g<=$gM} {incr g} {
for {set b 0} {$b<=$bM} {incr b} {
set rHex [format %02X $r]
set gHex [format %02X $g]
set bHex [format %02X $b]
set mark #
set color [append mark $rHex $gHex $bHex]
.cv config -bg $color
.lb config -text "[format %03d $r] [format %03d $g] [format %03d $b]"
after 500
}
}
}
}
canvas .cv
ttk::label .lb
ttk::button .bt -text Run -command {changeColor 255 255 255}
grid .cv -row 0 -column 0 -sticky news
grid .lb -row 1 -column 0 -sticky we
grid .bt -row 2 -column 0
Попробуйте использовать * update idletasks * перед строкой * после *. –
Привет Марио, очень ценю вашу любезную помощь. Оно работает. – Samuel