Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: Using Tk 8 menubar in its own window

by Anonymous Monk
on May 23, 2018 at 11:42 UTC ( #1215093=note: print w/replies, xml ) Need Help??


in reply to Using Tk 8 menubar in its own window

Its called a spacer
  • Comment on Re: Using Tk 8 menubar in its own window

Replies are listed 'Best First'.
Re^2: Using Tk 8 menubar in its own window
by chrstphrchvz (Scribe) on May 23, 2018 at 13:21 UTC

    Thanks for the quick reply. If by spacer you mean Frame, then your suggestion is reassuring in that I can use it with a simple test program:

    use warnings; use strict; use Tk 800.000; my $mw = MainWindow->new; my $menu = $mw->Menu(); my $file_menu = $menu->cascade(-label => 'File', -tearoff => 'false'); my $edit_menu = $menu->cascade(-label => 'Edit', -tearoff => 'false'); my $help_menu = $menu->cascade(-label => 'Help', -tearoff => 'false'); $mw->configure(-menu => $menu); my $spacer = $mw->Frame(-width => 200)->pack; # resize handle obscures Help menu $mw->resizable(0,0); MainLoop;

    I'm now inclined to think I didn't get this to work earlier because there's something else in the program that prevents a packed spacer from working as expected. I know the menu's window is being resized programmatically (so that it is stretched horizontally across the screen); I will have to keep digging to figure this out. I am not the program's original author, and am still figuring out my way around both it and Perl and Tk.

      It turns out the height of the menubar window was manually being set to 30 using $toplevel->geometry. Having it use height 0 instead eliminates the empty space. I then have to tell the program separately to pretend the menubar window has a height of 30 so that the positions calculated for the other windows do not overlap with the menubar window. Since I'm using geometry anyways, I can omit the spacer widget. Here's what that looks like for the test program:

      use warnings; use strict; use Tk 800.000; my $mw = MainWindow->new; my $menu = $mw->Menu(); my $file_menu = $menu->cascade(-label => 'File', -tearoff => 'false'); my $edit_menu = $menu->cascade(-label => 'Edit', -tearoff => 'false'); my $help_menu = $menu->cascade(-label => 'Help', -tearoff => 'false'); $mw->configure(-menu => $menu); # same effect as geometry('200x0+0+0') #my $spacer = $mw->Frame(-width => 200)->pack; $mw->geometry('200x0+0+0'); # resize handle obscures Help menu $mw->resizable(0,0); MainLoop;

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1215093]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2022-12-05 17:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?