Wie zeige ich auf einem Button ein Bild?
Inhalt:
Wer kennt sie nicht, die Buttons mit einer Grafik anstatt des Textes. Natuerlich kann man das
auch mit Perl/Tk machen:
Code
#! /usr/bin/perl
use strict;
use warnings;
use Tk;
my $mw = MainWindow->new();
my $photo = $mw->Photo(-file => './test.bmp');
$mw->Button(-image => $photo)->pack();
MainLoop;
Natuerlich funktioniert das auch mit einem Label oder einem anderen Widget, das die
Option -image unterstuetzt...
Die Bildformate GIF, BMP, PPM, XPM sind standardmäßig vorhanden. Um JPEG, PNG oder TIFF
zu benutzen, muss man
use Tk::JPEG;
# oder
use Tk::PNG;
# oder
use Tk::TIFF;
machen. Tk::JPEG und Tk::PNG sind seit Tk804.xxx in Perl/Tk enthalten, Tk::TIFF ist im
CPAN erhältlich.
Bild und Text gemeinsam in einem Button anzeigen
Um Bild und Text gemeinsam anzuzeigen, kann man seit Tk804.xxx die Option -compound verwenden.
-compound gibt an, auf welcher Seite das Bild vom Test aus erscheint:
use Tk;
$mw = tkinit;
$mw->Button(-text => "Hallo",
-image => $mw->Getimage("Xcamel"),
-compound => "left")->pack;
MainLoop;
In diesem Beispiel wurde die Methode
Getimage zum Laden eines Bildes verwendet.
Diese Methode schaut in @INC nach Bildern mit dem angegebenen Namen und hängt automatisch
die passende Extension an. In diesem Fall wird Xcamel.gif, welches in jeder Perl/Tk-Distribution
enthalten ist, geladen.
In älteren Perl/Tk-Version existiert die Option -compound nicht. Stattdessen muss man ein
Compound-Photo erzeugen:
use Tk;
use Tk::Compound;
$mw = tkinit;
$p = $mw->Compound;
$p->Image(-image => $mw->Getimage("Xcamel"));
$p->Text(-text => "Hallo");
$mw->Button(-image => $p)->pack;
MainLoop;
Die Tk::Compound-Klasse kennt noch weitere Methoden und ist mächtiger als die
-compound-Option.
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff