There are a few ways to do it, and it usually depends on what widget you are working with. Often some widgets have built-in bindings for Button-1, so you need to use a Button-2 or Button-3 binding. Basically, you just pop a menu at the pointerx, pointery location. There are so many ways to do it, that you need to show what code you are using. As a last resort, you can open a small toplevel window at the pointer location, and load it with whatever you desire.
#!/usr/bin/perl use warnings; use strict; use Tk; my $mw = MainWindow->new; $mw->title("Listbox"); # For example purposes, we will use one word for each letter my @choices = qw/alpha beta charlie delta echo foxtrot golf hotel india juliet kilo lima motel nancy oscar papa quebec radio sierra tango uniform victor whiskey xray yankee zulu/; #Create the text box and insert the list of choices in to it my $lb = $mw->Scrolled("Listbox", -scrollbars => "osoe", -height => 20, -selectmode => "multiple") ->pack(-side => "left"); $lb->insert("end", sort @choices); my $m = $lb->Menu(-tearoff => 0,-title=>'None', -menuitems => [ [Button => "Delete", -command => \&do1], [Button => "Rename", -command => \&do2], ] ); $lb->bind("<Button-3>" => [ sub { $lb->focus; # focus on listbox widget my($w, $x, $y) = @_; $m->post($x, $y); }, Ev('X'), Ev('Y') ] ); $mw->Button(-text => "Exit", -command => sub{exit; })->pack(-side => "bottom"); $mw->Button(-text=>"View", -command => sub { foreach ($lb->curselection()) { print "$choices[$_]\n"; } })->pack(-side => "bottom"); MainLoop; # Popup menu actions. sub do1{ my @sels = $lb->curselection(); print "@sels\n"; @sels = map $choices[$_],@sels; print "action do1->@sels\n"; } sub do2{ my @sels = $lb->curselection(); print "@sels\n"; @sels = map $choices[$_],@sels; print "action do2->@sels\n"; }

I'm not really a human, but I play one on earth. Cogito ergo sum a bum

In reply to Re: context menu in Perl/Tk by zentara
in thread context menu in Perl/Tk by spx2

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.