Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]4666[/thread]

Perl TK - Programm

Leser: 1


<< |< 1 2 3 4 >| >> 35 Einträge, 4 Seiten
betterworld
 2003-10-26 00:14
#44669 #44669
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Du hast das Prinzip schon richtig verstanden. Problem ist, dass $var sich nicht aendert, wenn $counter sich aendert. $var wird nur ein einizges Mal veraendert, und zwar in Zeile 5. Wenn Du $counter veraenderst, musst Du danach auch explizit wieder $var = "Du hast... $counter ..." schreiben, dann funktioniert alles perfekt
BrownWolf
 2003-10-26 00:54
#44670 #44670
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Thx werds mal testen :P
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
Crian
 2003-10-26 04:00
#44671 #44671
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
:-) Ich verschieb das mal ins Oberflächenforum
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
BrownWolf
 2003-10-25 22:51
#44672 #44672
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Hallo,

da ich in nächster Zeit vermutlich öfters mit Linux arbeiten werde, denke ich das mir TK helfen könnte.
Nun war ich dabei ein einfaches Programm zu schreiben.
Ich habe gleich einen eurer TK Tutorials unter Links benutzt.

http://www.pl-forum.de/work/perl/perltk.html

Quote
-textvariable => \$text Wie -text , nur das sich der Text ändert, wenn $text sich ändert.


Was ist damit gemeint ? Mein Code:

Code (perl): (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
#!/usr/bin/perl -w
use Tk;
use strict;

my &#36counter = 0;
my &#36var = "Du hast schon &#36counter Mal den Button geklickt.";

my &#36windows = MainWindow->new;
my &#36label = &#36windows->Label(
               
             -textvariabl
e => \&#36var,
               
            );
my &#36button = &#36windows->Button(
               
               
-text => "Hier klicken",
               
               
-command => sub { ++&#36counter }
               
              );
&#36label->pack();
&#36button->pack();
MainLoop;


Nur funktioniert so nicht ...
Aber der Inhalt von $var ändert sich doch.
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
betterworld
 2003-10-26 00:15
#44673 #44673
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Probier mal das hier:
Code: (dl )
1
2
3
4
my $a=123;
my $b="a ist $a";
$a=321;
print $b;
\n\n

<!--EDIT|betterworld|1067113002-->
BrownWolf
 2003-10-26 02:42
#44674 #44674
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
So bestimmt:

Code (perl): (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
#!/usr/bin/perl -w
use strict;
use Tk;

my &#36counter;
my &#36myvar = "Du hast den Button schon 0 mal gedrückt.";
my &#36win = MainWindow->new;
my &#36text = &#36win->Label(-textvariable => \&#36myvar);
my &#36button = &#36win->Button(
               
           -text => "Klicke hier",
               
           -command => sub {
               
               
++&#36counter;
               
               
&#36myvar = "Du hast den Button schon &#36counter mal gedrückt.";
               
           }
               
          );
&#36text->pack();
&#36button->pack();
MainLoop;


Edit: Mein erstes Zählerprogramm. Ist doch klasse geworden, oder ;)

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl -w
use strict;
use Tk;

my &#36counter;
my &#36myvar = "Der Zähler steht momentan auf 0.";
my &#36win = MainWindow->new(-background => "#000000");
&#36win->title("Zählerprogramm");
my &#36text = &#36win->Label(-foreground => "white", -background => "#000000", -textvariable => \&#36myvar);
my &#36button = &#36win->Button(-text => "+", -foreground => "white", -background => "#000088", -command => sub { handler(1) });
my &#36button2 = &#36win->Button(-text => "-", -foreground => "white",  -background => "#000088", -command => sub { handler(2) });
&#36text->pack();
&#36button->pack(-side => "left");
&#36button2->pack(-side => "right");
MainLoop;

sub handler {
    my &#36option = shift;
    &#36option == 1 ? ++&#36counter : --&#36counter;
    &#36myvar = "Der Zähler steht momentan auf &#36counter.";
}
\n\n

<!--EDIT|BrownWolf|1067123198-->
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
BrownWolf
 2003-10-26 06:39
#44675 #44675
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Und Uhren kann man damit auch basteln *G*

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl -w
use strict;
use Tk;
my $var;
$var = "Aktuelle Uhrzeit: " . localtime(time);
my $win = MainWindow->new(-background => "#000000");
my $text = $win->Label(
               
        -textvariable => \$var,
               
        -background => "#000000",
               
        -foreground => "#FFFFFF"
               
       );
$win->repeat(1000, sub { $var = "Aktuelle Uhrzeit: " . localtime(time) });
$text->pack();
MainLoop;


Aber ich weiss nicht wie man so gut Perl / TK lernen kann, das man zb. Käsekästchen schreibt wie Strat.
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
betterworld
 2003-10-26 08:54
#44676 #44676
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Ich wuerde uebrigens lieber MainLoop() statt MainLoop schreiben
BrownWolf
 2003-10-26 17:22
#44677 #44677
User since
2003-08-15
308 Artikel
BenutzerIn
[default_avatar]
Mir gefällt das MainLoop ohne Klammern besser ;)
Code (perl): ()
1
2
3
sub _{s;;xrqIpiql\\{}p{pl{R>rl{N{}gjwpkssq]>rl{N;;;*{{}=*{_};;
&#36{{}={q{{{}}}=>[reverse+split+reverse+q;}{;]};&#36{{}->{q{{{}}}}->[@{{}];}
&#36{{}=reverse+_(q{{}}=>q{{}})^chr(30)x+length&_(q{{}}=>,q{{}})and+print;
esskar
 2003-10-26 17:26
#44678 #44678
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
im grunde ist es egal...

ich bin auch für Klammern, damit es eindeutig ist, dass es sich um einen Funktions/Prozeduren-Aufruf handelt...

liegt aber wohl daran, dass ich nicht nur Perl programmiere
<< |< 1 2 3 4 >| >> 35 Einträge, 4 Seiten



View all threads created 2003-10-26 00:14.