Thread Tk: eigenes widget(canvas): Optionen werden nicht weitergeleitet? (4 answers)
Opened by PerlProfi at 2006-12-26 16:20

PerlProfi
 2006-12-26 16:20
#46046 #46046
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
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.
Code (perl): (dl )
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;

#
# create the widget
#
sub Populate
{
    my($frame, $args) = @_;

    # get widget specific options
    my $bg =    delete $args->{-fieldbackground}    || delete $args->{-background}        || "black";
    my $fg =    delete $args->{-fieldforeground}    || delete $args->{-foreground}        || "lightgreen";

    # Populate Frame
    $frame->SUPER::Populate($args);

    # create advertised widget: Canvas
    print Dumper($bg, $fg);

    my $canvas = $frame            -> Canvas    (-background    => $bg)->pack
               
               
  (-fill        => "both",
               
               
   -expand    => 1);
    $frame               
     -> Advertise    ('canvas'    => $canvas);

    # delegates to frame
    $frame               
     -> Delegates    (DEFAULT    => $frame);

    # configure to canvas
    $frame               
     -> ConfigSpecs    ('-fieldbg'    => '-fieldbackground',
               
               
   '-fieldfg'    => '-fieldforeground',
               
               
   -fieldbackground => ["PASSIVE",
               
               
               
 "", "",
               
               
               
 "#000000"],
               
               
   -fieldforeground => ["PASSIVE",
               
               
               
 "", "",
               
               
               
 "#1fff1f"],
               
               
   DEFAULT    => [$canvas]);
} # Populate

# return true
1;

__END__

Als Ausgabe kommt:
Code: (dl )
1
2
$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-->

View full thread Tk: eigenes widget(canvas): Optionen werden nicht weitergeleitet?