Ein kleines lauffähiges Beispiel ist für die Verständigung manchmal recht hilfreich.
Die Farbe des 3D-Rahmens wird von Tk aus der Hintergrundfarbe errechnet, um den aktuellen 3D-Effekt zu erzielen. Bei
-relief=>'flat' (kein 3D-Effekt) wird die Hintergrundfarbe benutzt. Bei
-borderwidth=>0 wird der Button etwas kleiner.
Bei Linux wird außerdem ein Highlight-Rahmen erzeugt, um anzuzeigen, ob der Button den Fokus hat. Dessen Farben kann man mit
-highlightbackground und
-highlightcolor setzen, die Breite mit
-highlightthickness. Bei Windows gibt es keinen Highlight-Rahmen. Der Fokus wird dort (Windows-konform) durch ein gepunktetes Rechteck im Widget angezeigt.
Dieses Beispiel mag als Grundlage für eigene Experimente dienen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use strict;
use warnings;
use Tk;
my $mw = MainWindow->new;
my $bt1 = $mw->Button(-text => 'Show dialog',
-command => \&showmsg)->pack;
my $bt2 = $mw->Button(-text => 'bunt', -activebackground => 'red',
-borderwidth => 6, -highlightbackground => 'green',
-highlightcolor => 'yellow', -highlightthickness => 4)->pack;
MainLoop;
sub showmsg {
my $antw = $mw->messageBox(-message => 'Exit?',
-type => 'YesNo', -default => 'No');
$antw eq 'Yes' and exit;
return;
}
Gruß
GUIfreund