User since
2007-09-26
11
Artikel
BenutzerIn
Hallo zusammen,
wie kann ich mit perl/tk eine Datei .gif einbinden?
Ich will links oben zwischen dem Button und der Name "England" eine Datei .gif einbinden (das gilt auch für der zweite Button, also vor dem Wort Oesterreich).
Danke im voraus.
-------------------------------------------------------------
# !/bin/perl -w
use Tk;
#
# Hauptfenster:
#
my $mw = MainWindow->new();
$mw->title('Ein Test');
my $fo = $mw->Frame()->pack(-side => 'top',
-expand => 1,
-fill => 'both',
);
#
# Checkbuttons:
#
my $f1 = $fo->Frame(-borderwidth => 3,
-relief => 'groove',
)
->pack(-side => 'right',
-expand => 1,
-fill => 'both',
);
#
# Radiobuttons1:
#
my $f2 = $fo->Frame(-label => 'Name auswaelen',
-borderwidth => 3,
-relief => 'groove',
)
->pack(-side => 'right',
-expand => 1,
-fill => 'both',
);
my @Name = ('test1',
'test2',
);
my $Namen = 0;
for my $i (0..$#Name) {
$f2->Radiobutton(-text => $Name[$i],
-variable => \$Namen,
-value => $i,
)
->pack(-anchor => 'w');
}
#
# Radiobuttons2:
#
my $f3 = $fo->Frame(-label => 'MY TEST',
-borderwidth => 3,
-relief => 'groove',
)
->pack(-side => 'right',
-expand => 1,
-fill => 'both',
);
my @Landliste = ('England',
'Oesterreich',
);
my $Land = 0;
for my $i (0..$#Landliste) {
$f3->Radiobutton(-text => $Landliste[$i],
-variable => \$Land,
-value => $i,
)
->pack(-anchor => 'w');
}
#
# OK-Button:
#
$mw->Button(-text => 'OK',
-command => sub { print $mw->destroy();
},
)
->pack(-side => 'bottom',
-expand => 0,
-fill => 'none',
-ipadx => 20,
-pady => 2,
);
MainLoop();
-------------------------------------------------------------
User since
2007-09-26
11
Artikel
BenutzerIn
Hallo ptk,
danke für die schnelle antwort.
Ich bin leider noch ein Anfänger mit tk...deshalb kannst du mir bitte sagen wo genau ich die Zeile $mw->Label($mw->Photo(-file => "....gif"))->pack; einfügen muss?
Vielen dank.
User since
2003-11-28
3645
Artikel
ModeratorIn
Das funktioniert nach dem selben Prinzip, wie du die anderen Widgets erzeugst hast.
Da du wahrscheinlich Bild und Radiobutton horizontal anordnen möchtest, pack() aber nur in einer Richtung funktioniert (bei den Radiobuttons vertikal), musst du wahrscheinlich noch Hilfs-Frames einfügen.
User since
2007-09-26
11
Artikel
BenutzerIn
Ich habe echt keine Ahnung wie es geht.
Kann jemand den gesamten Code schreiben?
Danke im Voraus.
Guten Tag, ich bin über Google auf diesen Thread hier gestoßen und habe auch Probleme mit dem einbinden von Bildern in Perl-Tk.
Hier mal das Wesentliche meines Codes:
use Tk;
use Tk::Photo;
my $fenster = MainWindow -> new();
my $photo = $fenster -> Photo (-data => "/home/xxx/logo.gif");
$fenster -> Label(-image => $photo) -> pack();
MainLoop();
Beim Ausführen bekomme ich aber jedes mal den Fehler:
couldn't recognize image data at /usr/lib/perl5/Tk/Image.pm line 21
Dabei habe ich es auch schon mit jpg und anderen Pfaden versucht.
Im Internet fand ich etwas, dass man das Bild Base64 codieren sollte um
solche Fehler zu vermeiden, jedoch hab ich keine Ahnung wie und wo ich
das genau integrieren soll, habe es aber schon versucht bei der Variable
$photo und es hat nichts gebracht.
Danke schonmal für eure Hilfe.
User since
2006-02-17
628
Artikel
BenutzerIn
my $photo = $fenster -> Photo (-file=> "/home/xxx/logo.gif");
Struppi+2008-01-20 17:24:53--my $photo = $fenster -> Photo (-file=> "/home/xxx/logo.gif");
Macht leider keinen Unterschied, mit "file" bekomme ich den gleichen Fehler.