Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> интервалы в Tk 
:(
    Опции темы
kostofffan
Дата 6.8.2004, 00:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Если кто шарит в модуле Tk подскажите плз. Как сделать так, чтобы определенная функция выполнялась с определенным интервалом? (к примеру сделать часы)

Сенкс!

P.S.: alarm не предлагать -- я под виндами )))
  Вверх
ElectricalStorm
Дата 6.8.2004, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: нет
Всего: 9



Код

$| = 1;

print "Привет ! \n";

sleep(3);

print "Через 3 секунды\n";




--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
kostofffan
Дата 7.8.2004, 00:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Нет, вы не поняли. Есть, к примеру, такой кусок кода:
Код
my ($sec, $min, $hour) = map {
   sprintf "%02d", $_;
  } (localtime(time))[0..2];
my $main = MainWindow->new(-title => 'Будильник');
my $frame = $main->Frame()->pack(-anchor => 'n', -pady => 15, -padx => 15);
my $lab = $frame->Label(-text => 'Время')->pack(-side => 'left', -padx => 5);
my $sec_entry = $frame->Entry(-textvariable => \$sec, -relief => 'flat', -width => 2)->pack(-side => 'right');
$frame->Label(-text => ':', -background => 'white')->pack(-side => 'right');
my $min_entry = $frame->Entry(-textvariable => \$min, -relief => 'flat', -width => 2)->pack(-side => 'right');
$frame->Label(-text => ':', -background => 'white')->pack(-side => 'right');
my $hour_entry = $frame->Entry(-textvariable => \$hour, -relief => 'flat', -width => 2)->pack(-side => 'right');
MainLoop;


И нужно, чтобы каждую секунду в полях $sec_entry, $min_entry и $hour_entry обновлялось значение. Но при этом паралельно должны обрабатываться и другие события, к примеру: нажатие какой либо кнопки, ввод в поле и т.д.
  Вверх
Secandr
Дата 7.8.2004, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: нет
Всего: 39



Добавить meta тег reload, тогда страница будет обновляться.
Если хочешь обновлять только поля - обновляй невидимый фрейм и javascript путь меняет значение вполях.


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Samot
Дата 16.11.2004, 19:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Для повторения действий, для языков программирования были придуманы цинлы.
В твоем случае можно написать функция(а-ля процедура) и в каждой итерации цикла вызываешь эту функцию. А чтобы через три секунды делаешь вот так:
while ( sleep( 3 ) ) {
main_procedure();
}


  Вверх
korob2001
Дата 17.11.2004, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Создай цикл, в котором будешь постоянно обновлять преременные $sec, $min, $hour. И на каждой итерации юзай метод update.
Вот короткий пример:
Код

#!/usr/bin/perl -w
use strict;
use Tk;
use encoding "ru_RU.CP1251";
my $mw = new MainWindow;
my($sec, $min, $hour, $full) = ();

my $fr = $mw->Frame->pack( -pady => 15,
                          -padx => 15 );
$fr->Label( -text => 'Время' )->pack( -side => 'left',
                                     -padx => 5 );
my $en = $fr->Entry( -textvariable => \$full,
                    -relief => 'flat',
                    -width => 8 )->pack( -side => 'right' );

while ( 1 ) {
   ( $sec, $min, $hour ) = ( localtime )[0..2];
   $sec = "0$sec" if $sec < 10;
   $min = "0$min" if $min < 10;
   $hour = " $hour" if $hour < 10;
   $full = "$hour:$min:$sec";
   $mw->update;
}

MainLoop;

Удачи.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: GUI | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.