in reply to Re^2: Placement of image with Tk::Compound and Tk::Menu
in thread Placement of image with Tk::Compound and Tk::Menu

Yes, the answer is GEOMETRY MANAGER.
#!/usr/bin/perl -w use strict; use Tk; use Tk::Compound; my $parent = MainWindow->new(); my $b = $parent->Button; my $c = $b->Compound; $b->configure(-image => $c); $c->Line; $c->Bitmap(-bitmap => 'warning'); $c->Space(-width => 8); $c->Text(-text => "Warning", -underline => 0); $b->pack(-side => 'left'); MainLoop();
This is the example code from Tk::Compound's documentation with a couple of things added to make it runnable. Note the addition of  -side => 'left' as an option to the pack command. Tk::pack is not my genoetry manager of choice, but it is simple for this demonstration. I would suggest developing amore than nodding acquaintance with "Mastering Perl/Tk" by Lidie and Walsh, published by O'Reilly.

jdtoronto

Replies are listed 'Best First'.
Re^4: Placement of image with Tk::Compound and Tk::Menu
by ldln (Pilgrim) on Jul 05, 2006 at 03:57 UTC
    Menubar doesn't need packing (did you even run my example code?)
    Maybe you didn't have Tk:ToolBar installed - but check updated example code above which uses a builtin bitmap instead.

    You use Tk::Compound widget on a Button widget but I'm using it on a command menuitem on a menubar.

      Yes, but after I had responded. I see your issue, looking carefully at my menues I note the constant space to the left of the option text, or in your case the graphic. This space is used for the check mark when you use a checkbutton in the menu. There is also some small space to the right which does not seem controllable either. I did somemore experimenting with some of my own code, but in the end I did not find a way to do what you need. Here is your code but with a Checkbutton added so when you check it you can see some justification for the space.
      #!/usr/bin/perl use Tk; use Tk::ToolBar; use Tk::Compound; #my $mw = tkinit; my $mw = MainWindow->new(); #Load images from Tk::ToolBar. my $tb = $mw->ToolBar(); $tb->destroy(); my $compound = $mw->Compound; #How do we place this image to far left in menu? $compound->Image( -image => 'acthelp16', -anchor => 'w' ); $compound->Space( -width => 8 ); $compound->Text( -text => "Open", -underline => 0 ); my $menubar = $mw->Menu( -type => 'menubar', ); #my $menuitem = [ [ command => Open, -image => $compound ] ]; $menubar->cascade( -label => 'File', -tearoff => 0, -menuitems => [ [ Button => 'Open', -image => $compound ], [ Button => '~Quit', -command => [ destroy => $mw ] +], [ Checkbutton => 'Checkthing' ], ] ); $mw->configure( -menu => $menubar ); MainLoop;
      jdtoronto
        Thanks for that.

        The checkbutton is behaving very nicely/sanely in the menu.

        If the image somehow could fit in where that checkbutton widget goes, problem would be solved.