Schrift
[thread]5330[/thread]

gif als button: wie lege ich ein gif auf einen Button?



<< >> 7 Einträge, 1 Seite
tricipitinus
 2007-06-10 17:50
#46442 #46442
User since
2007-06-03
6 Artikel
BenutzerIn
[default_avatar]
hi!

ich würde gerne einen einfachen button mit einem bild "überziehen"

dies kann man scheinbar als button-parameter lösen:
http://www.ida.liu.se/~tompe/perltk/options.htm#image
es wird weiters hierauf verwiesen:
http://www.ida.liu.se/~tompe/perltk/image.htm

ich bekomme das jetz aber irgendwie nicht hin.
muss ich nun erst eine seperate variable erzeugen, die mir ein photowidget erzeugt, auf die ich dann mit dem buttonparameter verweise?
das funktioniert jedenfalls nicht:
Code: (dl )
1
2
3
4
5
   my $button1 = $main->Button( -height => "4",
-width => "4",
-image => '1tel.gif',
-command => sub {exit 0} );
$button1->pack(-anchor => "ne");
\n\n

<!--EDIT|tricipitinus|1181490681-->
ptk
 2007-06-10 20:05
#46443 #46443
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
-image muss als Wert ein Photo-Objekt haben, keinen Pfad. Also:
Code: (dl )
   -image => $main->Photo(-file => '1tel.gif'),
tricipitinus
 2007-06-10 22:16
#46444 #46444
User since
2007-06-03
6 Artikel
BenutzerIn
[default_avatar]
ok, danke, funktioniert super!

jetzt hab ich noch ein andres problem.

ich lade mein canvas und habe 4 buttons.
ich möchte nun bei jedem buttondruck eine andre canvas "aktivieren".
das problem ist, dass ich nicht weiss, wie ich den "alten" canvas verschwinden lassen kann, er erstellt mir jetz nämlich immer einen neuen darunter, anstatt den alten zu ersetzen. leider hab ich bisher nichts gefunden, um den alten im betrieb wieder zu entfernen..

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
31
32
33
34
35
my $frame1 = $main->Frame( -relief => "groove",
-borderwidth => 5);
$frame1->pack( -fill => "both",
-side => "top");

my $canvas1 = $frame1 ->Canvas(-width => '253',
-height => '477',
);
$canvas1->pack;
my $file = 'image.gif';
my $img =
$canvas1->Photo( 'imggif',
-file => $file );

$canvas1->create( 'image',0,0,
'-anchor' => 'nw',
'-image' => $img,
);
....
...
sub tel{
my $canvas2 = $frame1 ->Canvas(-width => '253',
-height => '477',
);
$canvas2->pack;
my $file = 'image_tel.gif';
my $img =
$canvas2->Photo( 'imggif',
-file => $file );

$canvas2->create( 'image',0,0,
'-anchor' => 'nw',
'-image' => $img,
);
}
#Kein Kommentar
 2007-06-10 22:18
#46445 #46445
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
hast du es schon mit packForget () ausprobiert?
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
tricipitinus
 2007-06-11 02:03
#46446 #46446
User since
2007-06-03
6 Artikel
BenutzerIn
[default_avatar]
nein, aber jetzt =)
das sieht schon besser aus, aber es hilft nur beim ersten klicken.
wenn ich erneut auf den button klicke oder auf einen der andren, dann ändert sich zwar die canvas, aber er fügt pro click wieder einen neuen unten an :(
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sub  mp3{
$canvas1 ->packForget();
my $canvas1 = $frame1 ->Canvas(-width => '253',
-height => '477',
);
$canvas1->pack;
my $file = 'image_mp3.gif';
my $img =
$canvas1->Photo( 'imggif',
-file => $file );

$canvas1->create( 'image',0,0,
'-anchor' => 'nw',
'-image' => $img,
);
}


das $canvas1 ->packForget(); hab ich bei den subroutinen aller 4 buttons drin.
tricipitinus
 2007-06-11 12:04
#46447 #46447
User since
2007-06-03
6 Artikel
BenutzerIn
[default_avatar]
hab eine ander Lösung gefunden
(einfach label statt canvas, weil ich die canvas in dem fall eig. gar nicht mehr brauche) :D
Sucher
 2007-06-12 00:50
#46448 #46448
User since
2007-03-26
47 Artikel
BenutzerIn
[default_avatar]
Hallo ,
Code: (dl )
1
2
3
4
5
6
sub  mp3{
$canvas1 ->packForget();
my $canvas1 = $frame1 ->Canvas(-width => '253',
-height => '477',
);
$canvas1->pack;

Du hast hier ein scoping-Problem: Der $canvas1, den du neu erzeugst, ist lexical in deiner sub. D.H. wenn du die sub verlässt, kannst du nicht mehr darauf zugreifen. Wahrscheinlich hast du ausserhalb der sub $canvas1 noch einmal definiert...

Immer
use strict;
use warnings,
das hilft...

Grüße,\n\n

<!--EDIT|Sucher|1181595056-->
<< >> 7 Einträge, 1 Seite



View all threads created 2007-06-10 17:50.