#!/usr/bin/perl
# https://perlmonks.org/?node_id=1223174
use strict;
use warnings;
use Tk;
#use CoolFrame;
{
package Tk::CoolFrame;
use strict;
use warnings;
use vars qw/$VERSION/;
$VERSION = '1.0';
use base qw(Tk::Frame);
Construct Tk::Widget 'CoolFrame';
sub ClassInit {
my($class, $mw) = @_;
$class->SUPER::ClassInit($mw);
}
sub Populate {
my($self, $args) = @_;
$self->SUPER::Populate($args);
my $outer = $self->Frame()->pack(-fill=> 'both', -expand=> 1);
my $inner = $outer->Frame()->pack(-fill=> 'both', -expand=> 1);
$self->ConfigSpecs(
-background => [{-background => $inner}, 'background', 'Backg
+round', '#d9d9d9'], # grey
-bordercolor => [{-background => $outer}, 'bordercolor', 'Bord
+ercolor', '#000000'], # black
-borderwidth => [{-borderwidth => $outer}, 'borderwidth', 'Bor
+derwidth', 1],
'DEFAULT' => [$outer],
);
$self->{outer} = $outer;
$self->{inner} = $inner;
$self->Delegates('Construct' => $inner); # <--- add this
}
}
################################################### package main;
my $mw = MainWindow->new();
$mw->geometry( );
my $frame = $mw->CoolFrame(
-bordercolor => 'red',
-background=> 'white',
)->pack(-padx => 5, -pady => 5);
# # THIS WORKS
# my $button = $frame->{'inner'}->Button(
# -text=> "Exit",
# -command=> sub{ exit; },
# )->pack(-padx => 5, -pady => 5);
# THIS IS WHAT I WOULD LIKE TO DO!
my $button = $frame->Button(
-text=> "Exit",
-command=> sub{ exit; },
)->pack(-padx => 5, -pady => 5);
MainLoop();
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.