⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch21_14.htm

📁 by Randal L. Schwartz and Tom Phoenix ISBN 0-596-00132-0 Third Edition, published July 2001. (See
💻 HTM
字号:
<html><head><title>The Menubutton Widget (Perl in a Nutshell, 2nd Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Stephen Spainhour" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly &amp; Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="0596002416L" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="Perl in a Nutshell, 2nd Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Java and XSLT" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch21_13.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch21_15.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">21.14. The Menubutton Widget</h2><p><a name="INDEX-3056" /><a name="INDEX-3057" /><a name="INDEX-3058" />Create a menubutton with the<tt class="literal">Menubutton</tt> method. For example:</p><blockquote><pre class="code">$mainwindow-&gt;Menubutton(-text =&gt; "File",         -menuitems =&gt; [ [ command =&gt; "New",                            -command =&gt; \&amp;newfile,                          -underline =&gt; 0 ],                           [ command =&gt; "Open",                            -command =&gt; \&amp;openfile,                          -underline =&gt; 0 ],                        "-",                           [ command =&gt; "Save",                            -command =&gt; \&amp;savefile,                          -underline =&gt; 0 ],                           [ command =&gt; "SaveAs",                            -command =&gt; \&amp;saveasfile,                          -underline =&gt; 4 ] ] );</pre></blockquote><p><a name="INDEX-3059" />The <tt class="literal">-menuitems</tt>option takes a list of lists describing the menu items. For each menuitem, an embedded anonymous list describes the type of menu item, thelabel to use, and the action to take when it is selected along withany other options desired to configure the menu item. In thisexample, each of the menu items is the <tt class="literal">command</tt>type, and we use the <tt class="literal">-command</tt> option for each itemto point to the callback to execute when the menu item is selected.We also use the <tt class="literal">-underline</tt> option to enable theuser to select a menu item using keystrokes.(<tt class="literal">\[</tt><em class="replaceable"><tt>quotedbl</tt></em>]-represents a separator between menu items.)</p><p>In addition to <tt class="literal">command</tt>, other types of menus are:</p><dl><dt><b><tt class="literal">cascade</tt></b></dt><dd>Embeds a cascade menu</p></dd><dt><b><tt class="literal">checkbutton</tt></b></dt><dd>Treats the menu item as a checkbutton</p></dd><dt><b><tt class="literal">radiobutton</tt></b></dt><dd>Treats the menu item as a radiobutton</p></dd></dl><p>You can configure both the menu itself and the individual menu items.The configuration options that apply to <tt class="literal">Menubutton</tt>are: <tt class="literal">-activebackground</tt>,<tt class="literal">-active</tt>-<tt class="literal">foreground</tt>,<tt class="literal">-anchor</tt>, <tt class="literal">-background</tt>,<tt class="literal">-bg</tt>, <tt class="literal">-bitmap</tt>,<tt class="literal">-borderwidth</tt>, <tt class="literal">-bw</tt>,<tt class="literal">-cursor</tt>,<tt class="literal">-disa</tt>-<tt class="literal">bledforeground</tt>,<tt class="literal">-font</tt>, <tt class="literal">-foreground</tt>,<tt class="literal">-fg</tt>, <tt class="literal">-height</tt>,<tt class="literal">-highlightbackground</tt>,<tt class="literal">-high</tt>-<tt class="literal">lightcolor</tt>,<tt class="literal">-highlightthickness</tt>, <tt class="literal">-image</tt>,<tt class="literal">-justify</tt>, <tt class="literal">-padx</tt>,<tt class="literal">-pady</tt>, <tt class="literal">-relief</tt>,<tt class="literal">-state</tt>, <tt class="literal">-takefocus</tt>,<tt class="literal">-underline</tt>, <tt class="literal">-width</tt>, and<tt class="literal">-wraplength</tt>.</p><p>Other <tt class="literal">Menubutton</tt> options are:</p><dl><dt><b><tt class="literal">-indicatoron =&gt;</tt> <em class="replaceable">boolean</em></b></dt><dd><a name="INDEX-3060" />Determines whether to display anindicator.</p></dd><dt><b><tt class="literal">-menu =&gt;</tt> <tt class="literal">$</tt><em class="replaceable">menu</em></b></dt><dd><a name="INDEX-3061" />Displays the menu associated with<tt class="literal">$</tt><em class="replaceable"><tt>menu</tt></em>.</p></dd><dt><b><tt class="literal">-menuitems =&gt;</tt> <em class="replaceable">list</em></b></dt><dd><a name="INDEX-3062" />Specifies items to create in the menuas a list of lists. See the description at the beginning of thissection.</p></dd><dt><b><tt class="literal">-tearoff =&gt;</tt> <em class="replaceable">boolean</em></b></dt><dd><a name="INDEX-3063" />Whether to allow the menu to be"torn off." Default is<tt class="literal">1</tt>.</p></dd><dt><b><tt class="literal">-text =&gt;</tt> <em class="replaceable">string</em></b></dt><dd><a name="INDEX-3064" />Specifies the text to display as alabel for the button.</p></dd><dt><b><tt class="literal">-textvariable =&gt;</tt> <tt class="literal">\$</tt><em class="replaceable">variable</em></b></dt><dd><a name="INDEX-3065" />Points to the variable containing textto be displayed in the menubutton. Button text will change as<tt class="literal">$</tt><em class="replaceable"><tt>variable</tt></em> does.</p></dd></dl><a name="perlnut2-CHP-21-SECT-14.1" /><div class="sect2"><h3 class="sect2">21.14.1. Menu Item Options</h3><p>In addition to the menu itself, each individual menu item can beconfigured. The widget configuration options that apply to menu itemsare: <tt class="literal">-activebackground</tt>,<tt class="literal">-background</tt>, <tt class="literal">-bg</tt>,<tt class="literal">-bitmap</tt>, <tt class="literal">-font</tt>,<tt class="literal">-foreground</tt>, <tt class="literal">-fg</tt>,<tt class="literal">-image</tt>, <tt class="literal">-state</tt>, and<tt class="literal">-underline</tt>. Other options are:</p><dl><dt><b><tt class="literal">-accelerator</tt></b></dt><dd><a name="INDEX-3066" />Displays an accelerator keysequence for the menu item. The key sequence must be independentlydefined with a <tt class="literal">bind</tt>.</p></dd><dt><b><tt class="literal">-command =&gt;</tt> <em class="replaceable">callback</em></b></dt><dd><a name="INDEX-3067" />Pointer to a function that will becalled when the menu item is selected.</p></dd><dt><b><tt class="literal">-indicatoron =&gt;</tt> <em class="replaceable">boolean</em></b></dt><dd><a name="INDEX-3068" />Determines whether to display anindicator.</p></dd><dt><b><tt class="literal">-label =&gt;</tt> <em class="replaceable">string</em></b></dt><dd><a name="INDEX-3069" />The string to use as a label for themenu item.</p></dd><dt><b><tt class="literal">-menu =&gt;</tt> <tt class="literal">$</tt><em class="replaceable">submenu</em></b></dt><dd><a name="INDEX-3070" />For a cascade menu, points to the menuto embed.</p></dd><dt><b><tt class="literal">-offvalue =&gt;</tt> <em class="replaceable">newvalue</em></b></dt><dd><a name="INDEX-3071" />For a checkbutton, specifies the valueused when the checkbutton is off.</p></dd><dt><b><tt class="literal">-onvalue =&gt;</tt> <em class="replaceable">newvalue</em></b></dt><dd><a name="INDEX-3072" />For a checkbutton, specifies the valueused when the checkbutton is on.</p></dd><dt><b><tt class="literal">-selectcolor =&gt;</tt> <em class="replaceable">color</em></b></dt><dd><a name="INDEX-3073" />For a checkbutton or radiobutton, colorof the indicator when on.</p></dd><dt><b><tt class="literal">-selectimage =&gt;</tt> <em class="replaceable">imgptr</em></b></dt><dd><a name="INDEX-3074" />For a checkbutton or radiobutton,defines the image to be displayed instead of text when theradiobutton is on. Ignored if <tt class="literal">-image</tt> is not used.</p></dd><dt><b><tt class="literal">-value =&gt;</tt> <em class="replaceable">value</em></b></dt><dd><a name="INDEX-3075" />For a radiobutton, sets<tt class="literal">$</tt><em class="replaceable"><tt>variable</tt></em> to thespecified value when the radiobutton is selected (default is<tt class="literal">1</tt>).</p></dd><dt><b><tt class="literal">-variable =&gt;</tt> <tt class="literal">\$</tt><em class="replaceable">variable</em></b></dt><dd><a name="INDEX-3076" />Associates the value of the menu itemto the specified variable.</p></dd></dl></div><a name="perlnut2-CHP-21-SECT-14.2" /><div class="sect2"><h3 class="sect2">21.14.2. Menubutton Methods</h3><p>In addition to <tt class="literal">configure</tt> and<tt class="literal">cget</tt>, the following methods are defined forMenubutton widgets:</p><dl><dt><b><tt class="literal">AddItems</tt></b></dt><dd><a name="INDEX-3077" />Adds menu items to the end of themenu. The arguments to <tt class="literal">AddItems</tt> are listsconfiguring each menu item, similar to the lists defined with the<tt class="literal">-menuitem</tt> option.</p><blockquote><pre class="code">$menubutton-&gt;AddItems([command =&gt; "Print",                                       -command =&gt; \&amp;printscreen ],                                       [command =&gt; "Exit",                                       -command =&gt; \&amp;exitclean ]);</pre></blockquote></dd><dt><b><tt class="literal">command</tt></b></dt><dd><a name="INDEX-3078" />Adds a command item to the end of themenu. The above example could have read:</p><blockquote><pre class="code">$menubutton-&gt;command(-label =&gt; "Print", -command =&gt; \&amp;printscreen);$menubutton-&gt;command(-label =&gt; "Exit", -command =&gt; \&amp;exitclean);</pre></blockquote></dd><dt><b><tt class="literal">checkbutton</tt></b></dt><dd><a name="INDEX-3079" />Adds a checkbutton item to the endof the menu:</p><blockquote><pre class="code">$menubutton-&gt;checkbutton(-label =&gt; "Show Toolbar",            -variable =&gt; \$toolbar);</pre></blockquote></dd><dt><b><tt class="literal">radiobutton</tt></b></dt><dd><a name="INDEX-3080" />Adds a radiobutton item to the endof the menu:</p><blockquote><pre class="code">$menubutton-&gt;radiobutton(-label =&gt; "Red", -variable =&gt; \$color);$menubutton-&gt;radiobutton(-label =&gt; "Blue", -variable =&gt; \$color);</pre></blockquote></dd><dt><b><tt class="literal">separator</tt></b></dt><dd><a name="INDEX-3081" />Adds a separator line to the end ofa menu.</p></dd><dt><b><tt class="literal">cascade</tt></b></dt><dd><a name="INDEX-3082" />Adds a cascade item to the end ofthe menu.</p></dd><dt><b><tt class="literal">menu</tt></b></dt><dd><a name="INDEX-3083" />Returns a reference to the menu.</p></dd><dt><b><tt class="literal">entrycget</tt></b></dt><dd><a name="INDEX-3084" />Gets information on a menu entry givenan index and option to query.</p></dd><dt><b><tt class="literal">entryconfigure</tt></b></dt><dd><a name="INDEX-3085" />Changes information on a specific menuitem given an index.</p></dd></dl></div><hr width="684" align="left" /><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch21_13.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228"><a href="index.htm"><img src="../gifs/txthome.gif" alt="Home" border="0" /></a></td><td align="right" valign="top" width="228"><a href="ch21_15.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr><tr><td align="left" valign="top" width="228">21.13. The Scale Widget</td><td align="center" valign="top" width="228"><a href="index/index.htm"><img src="../gifs/index.gif" alt="Book Index" border="0" /></a></td><td align="right" valign="top" width="228">21.15. The Menu Widget</td></tr></table></div><hr width="684" align="left" /><img src="../gifs/navbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links" /><p><p><font size="-1"><a href="copyrght.htm">Copyright &copy; 2002</a> O'Reilly &amp; Associates. All rights reserved.</font></p><map name="library-map"><area shape="rect" coords="1,0,85,94" href="../index.htm"><area shape="rect" coords="86,1,178,103" href="../lwp/index.htm"><area shape="rect" coords="180,0,265,103" href="../lperl/index.htm"><area shape="rect" coords="267,0,353,105" href="../perlnut/index.htm"><area shape="rect" coords="354,1,446,115" href="../prog/index.htm"><area shape="rect" coords="448,0,526,132" href="../tk/index.htm"><area shape="rect" coords="528,1,615,119" href="../cookbook/index.htm"><area shape="rect" coords="617,0,690,135" href="../pxml/index.htm"></map></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -