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

UtilFaqSubForm edit

Titel Wie zeige ich auf einem Button ein Bild?
Autor ReneeBaecker
Bereich FaqTK
Topic revision: 2005-11-10, PlTk
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.