Thread Scrolled Text - Label die 2.: Scrolled Text - Label die 2. (4 answers)
Opened by ahnungsloser at 2004-08-24 22:01

renee
 2004-08-25 10:21
#42590 #42590
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es werden zuerst die ganzen Pings gemacht, und dann wird erst der Ticker geöffnet... Da Du den Text immer auf den "aktuellen" Host änderst - und ganz zum Schluss ist pc.de der aktuelle host, siehst du immer nur pc.de...

Wenn Du alle sehen willst, hast Du zwei Möglichkeiten:

1.)  Hier siehst Du alle hosts im Ticker!
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl
use Tk;

$MW = MainWindow->new(-title => "Reach-Ticker by Dataabbel");
$MW->resizable(0,0);
$MW->geometry("300x30+10+20");
$MW->repeat(90, \&tick);        
$LabelW = $MW->Label(-textvariable => "")->pack(-expand => 1, -fill => 'x'); # leeres label erzeugen

   @data = qw (www.petra-hille.de www.google.de www.yahoo.de www.perl-community.de);

   foreach $host (@data) {
   $| = 1;
   @pin = `ping -c 1 $host`;

   if ($pin[4] =~ /received/) {
   chomp ($host);
   $text .=  $host . " received ";
   $LabelW->configure(-textvariable => ""); # sollte das Label vorsichtshalber löschen, glaube unsinnig
   $LabelW->configure(-textvariable => \$text); # hier sollte nu der aktuelle host stehen,steht aber nur letztes element aus @data
   }
   }

MainLoop;    
sub tick {
 $width = $LabelW->cget('width');
 return unless $width < length $text;
 $text = substr($text,1,length($text)-1) . substr($text,0,1);
 
}


2.) - allerdings nicht als Ticker; einfach mal ausprobieren -
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl
use Tk;
use strict;
use warnings;

my $mw = MainWindow->new(-title => "Reach-Ticker by Dataabbel");
$mw->resizable(0,0);
$mw->geometry("300x30+10+20");
my $label_w = $mw->Label(-textvariable => "")->pack(-expand => 1, -fill => 'x'); # leeres label erzeugen
my $i = 0;
my $text;
($text) = $mw->repeat(900, \&ping);


MainLoop;

sub ping{
 my @data = qw (www.petra-hille.de www.google.de www.yahoo.de www.perl-community.de);
 my $text;
 my @pin = `ping -c 1 $data[$i]`;

 if ($pin[4] =~ /received/) {
   $text =  $data[$i] . " received ";
   $label_w->configure(-textvariable => \$text);
 }
 $i = -1 if $i == $#data;
 $i++;
 return ($text);
}


Benutze bitte use strict; und use warnings;!\n\n

<!--EDIT|renee|1093424276-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread Scrolled Text - Label die 2.: Scrolled Text - Label die 2.