Thread Tk: eigenes widget(canvas): Optionen werden nicht weitergeleitet?
(4 answers)
Opened by PerlProfi at 2006-12-26 16:20
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: 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--> |