Пытаюсь заставить скроллиться текст.
Пока не получается.
Собственно, ниже скрипт, который показывает текстовое поле со строкой,
которую должен в этом поле скроллить. Пробовал два варианта, оба есть в
теле письма, оба не производят никаких действий на вид окна.
#!/usr/bin/wish
wm title . "scroll test";
text .scroller -height 1 -width 10;
pack .scroller -side top -fill x;
set scrolltext "qwertyuiop asdfghjkl zxcvbnm"
.scroller delete 1.0 end;
.scroller insert end $scrolltext;
proc scrl_update position {
global scrolltext;
set position [expr $position + 1];
if {$position>=[string length .$scrolltext]} {set position 0};
# заготовка для обновления текста, для дальнейшего развития.
# .scroller delete 1.0 end;
# .scroller insert end $scrolltext;
# variant 1
#.scroller xview scroll $position units;
# variant 2
set pos [ expr 1.0 * $position / [string length .$scrolltext]];
.scroller xview moveto $pos;
after 2000 scrl_update $position;
puts $position; # debug output
}
scrl_update 0;
tkwait window .
--
Stanislav
Стандартный способ сделать прокрутку текста из программы - команда
see текстового видгета. С xview и yview возиться лучше предоставить
scrollbar-у, он это умеет.
А так, если нужно сделать аналог tail - добавить строки в конец и
убедиться что они видимы, то
$text insert end "some lines"
$text see end
> Пытаюсь заставить скроллиться текст.
> Пока не получается.
Вместо text лучше получится с canvas. Если строка скроллится
циклически, то их надо две подряд склеить. А дальше просто раз в N
миллисекунд (~20мс) крутить scrollregion.
> А так, если нужно сделать аналог tail - добавить строки в конец и
> убедиться что они видимы, то
+ set yview [$text yview]
$text insert end "some lines"
- $text see end
+ if {[lindex $yview 1] == 1.0} {$text see end}
SV>> Здравствуйте, господа.
SV>> Пытаюсь заставить скроллиться текст. Пока не получается.
SV>> Собственно, ниже скрипт, который показывает текстовое поле
SV>> со строкой, которую должен в этом поле скроллить. Пробовал
SV>> два варианта, оба есть в теле письма, оба не производят
VW> Стандартный способ сделать прокрутку текста из программы - команда
VW> see текстового видгета. С xview и yview возиться лучше предоставить
VW> scrollbar-у, он это умеет.
Попробовал.
Hесколько не то.
Hедостаточно плавно.
VW> А так, если нужно сделать аналог tail - добавить строки в конец и
VW> убедиться что они видимы, то
Hет, tail мне не нужен.
Я тут практики ради и здоровья для делаю морду к mpd на tcl/tk, чтобы
прикрутить ее к FvwmButtons. Осталось сделать скорллинг названия
мелодии.
--
Stanislav
>> Пытаюсь заставить скроллиться текст.
>> Пока не получается.
KF> Вместо text лучше получится с canvas. Если строка скроллится
KF> циклически, то их надо две подряд склеить. А дальше просто раз в N
KF> миллисекунд (~20мс) крутить scrollregion.
Хм... Мысль интересная.
Буду ее думать.
--
Stanislav