Hallo,
Ich habe hier ein eigenes Widget, es ist ein wrapper um ein Tk::Canvas.
Ich lege für ein paar Optionen standard Werte fest, die auch richtig gesetzt werden, allerdings wird die Hintergrundfarbe des Canvas nicht auf schwarz gesetzt, obwohl ich schwarz als default Wert eingetragen habe.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package Tk::CanvasG;
require Tk::Frame;
@ISA = qw(Tk::Frame);
Construct Tk::Widget 'CanvasG';
use strict;
use warnings 'all';
use vars qw($VERSION);
$VERSION = '0.1.0';
use Data::Dumper;
sub Populate
{
my($frame, $args) = @_;
my $bg = delete $args->{-fieldbackground} || delete $args->{-background} || "black";
my $fg = delete $args->{-fieldforeground} || delete $args->{-foreground} || "lightgreen";
$frame->SUPER::Populate($args);
print Dumper($bg, $fg);
my $canvas = $frame -> Canvas (-background => $bg)->pack
(-fill => "both",
-expand => 1);
$frame
-> Advertise ('canvas' => $canvas);
$frame
-> Delegates (DEFAULT => $frame);
$frame
-> ConfigSpecs ('-fieldbg' => '-fieldbackground',
'-fieldfg' => '-fieldforeground',
-fieldbackground => ["PASSIVE",
"", "",
"#000000"],
-fieldforeground => ["PASSIVE",
"", "",
"#1fff1f"],
DEFAULT => [$canvas]);
}
1;
__END__
Als Ausgabe kommt:
$VAR1 = 'black';
$VAR2 = 'lightgreen';
Trotzdem bleibt das Canvas in der standard Tk Farbe.
Wenn ich allerdings nachträglich mit configure() -background setze, wird es verändert.
Weiß jemand Rat?
MfG PerlProfi\n\n
<!--EDIT|PerlProfi|1167142903-->