亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2167 | 回復: 1
打印 上一主題 下一主題

關(guān)于tk和fork [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-08-16 14:24 |只看該作者 |倒序瀏覽
請教各位大俠,我想用tk實現(xiàn)這樣一個功能: 點擊button stop后,button的item顯示為start,同時label中的text停止?jié)L動顯示,然后點擊button start,label的text會繼續(xù)顯示。
以下是我寫的, 發(fā)現(xiàn)在tk中fork時,sleep 沒有生效,而且感覺變量$but改變也沒有生效,如果不用fork直接使用信號,那么就會阻塞,sleep 10s后,button才能改變,而不是按下去就改變,
是什么問題呢?關(guān)于進程、事件驅(qū)動這塊我理解的還不深入,希望學習下。
#!/usr/bin/perl
use TK;
my $mw = MainWindow->new;
my $mess = "this is from me ^o^";
my $but = "Stop";
my ($ppid,$pid);
$SIG{'USR1'} = sub {
    sleep(10);
};
$ppid = $$;
$mw->Label(-textvariable => \$mess)->pack(-expand => "1");
$mw->after(100,\&scroll);
$mw->Button(
    -textvariable    => \$but,
    -command => sub {
      if($but eq "Start") {
        $pid = fork();
        if ( $pid ==0 ) {
           print "start->stop\n";
        } else {
          wait;
          $but = "Stop";
        }
      } else {
        $pid = fork();
        if ( $pid ==0 ) {
           system("kill -USR1 $ppid");
           print "stop->start\n";
        } else {
          wait;
          $but = "Start";
        }
      }
    }
)->pack;

sub scroll {
$mess =~ /(.)(.*)/;
$mess = "$2$1";
$mw->after(100,\&scroll);
}
$mw->MainLoop;

論壇徽章:
0
2 [報告]
發(fā)表于 2010-08-16 15:57 |只看該作者

  1. #!/bin/env perl

  2. use strict;
  3. use warnings;
  4. use TK;

  5. my $mw = MainWindow->new;
  6. my $mess = "this is from me ^o^";
  7. my $btn_text = "Stop";
  8. my $event_id = undef;

  9. $mw->Label(-textvariable => \$mess)->pack(-expand => "1");
  10. $mw->Button
  11. (
  12.         -textvariable => \$btn_text,
  13.         -command =>
  14.         sub
  15.         {
  16.                 if($btn_text eq "Start")
  17.                 {
  18.                         $btn_text = "Stop";
  19.                         if (defined $event_id)
  20.                         {
  21.                                 $mw->afterCancel($event_id);
  22.                                 $event_id = undef;
  23.                         }

  24.                         $event_id = $mw->repeat(100, \&scroll);
  25.                 }
  26.                 else
  27.                 {
  28.                         $btn_text = "Start";
  29.                         if (defined $event_id)
  30.                         {
  31.                                 $mw->afterCancel($event_id);
  32.                                 $event_id = undef;
  33.                         }
  34.                 }
  35.         }
  36. )->pack();

  37. $event_id = $mw->repeat(100, \&scroll);
  38. $mw->MainLoop();

  39. #################################################################

  40. sub scroll
  41. {
  42.         $mess = substr($mess, 1) . substr($mess, 0, 1);
  43. }
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP