| 1 | |
| 2 | <html> |
| 3 | <head> |
| 4 | <meta name="description" content="Pmw - a toolkit for building high-level compound widgets in Python"> |
| 5 | <meta name="content" content="python, megawidget, mega widget, compound widget, gui, tkinter"> |
| 6 | <title>Pmw.NoteBook reference manual</title> |
| 7 | </head> |
| 8 | |
| 9 | <body bgcolor="#ffffff" text="#000000" link="#0000ee" |
| 10 | vlink="551a8b" alink="ff0000"> |
| 11 | |
| 12 | <h1 ALIGN="CENTER">Pmw.NoteBook</h1> |
| 13 | |
| 14 | <center><IMG SRC=NoteBook.gif ALT="" WIDTH=400 HEIGHT=219></center> |
| 15 | <dl> |
| 16 | <dt> <h3>Name</h3></dt><dd> |
| 17 | <p>Pmw.NoteBook() - |
| 18 | a set of tabbed pages |
| 19 | </p> |
| 20 | |
| 21 | |
| 22 | </dd> |
| 23 | <dt> <h3>Inherits</h3></dt><dd> |
| 24 | <a href="MegaArchetype.html">Pmw.MegaArchetype</a><br> |
| 25 | </dd> |
| 26 | <dt> <h3>Description</h3></dt><dd> |
| 27 | <p> |
| 28 | A notebook contains a set of tabbed pages. At any one time only |
| 29 | one of these pages (the <em>selected</em> page) is visible, with the |
| 30 | other pages being hidden "beneath" it. Another page in the |
| 31 | notebook may be displayed by clicking on the tab attached to the |
| 32 | page. The tabs are displayed along the top edge.</p> |
| 33 | |
| 34 | <p> Optionally, the notebook may be displayed without tabs. In this |
| 35 | case, another selection widget, such as <a href="OptionMenu.html">Pmw.OptionMenu</a>, may be used |
| 36 | to select the pages.</p> |
| 37 | |
| 38 | <p> This megawidget is derived from <a href="MegaArchetype.html">Pmw.MegaArchetype</a> (not <a href="MegaWidget.html">Pmw.MegaWidget</a> |
| 39 | like most other megawidgets), with the hull class being |
| 40 | Tkinter.Canvas.</p> |
| 41 | |
| 42 | <p></p> |
| 43 | |
| 44 | |
| 45 | </dd> |
| 46 | <dt> <h3>Options</h3></dt><dd> |
| 47 | Options for this megawidget and its base |
| 48 | classes are described below.<p></p> |
| 49 | <a name=option.arrownavigation></a> |
| 50 | <dl><dt> <strong>arrownavigation |
| 51 | </strong></dt><dd> |
| 52 | Initialisation option. If true and a tab button has the keyboard focus, then the Left and |
| 53 | Right arrow keys can be used to select the page before or after |
| 54 | the tab button with the focus. The default is <strong>1</strong>.</p> |
| 55 | |
| 56 | |
| 57 | </dd></dl> |
| 58 | <a name=option.borderwidth></a> |
| 59 | <dl><dt> <strong>borderwidth |
| 60 | </strong></dt><dd> |
| 61 | Initialisation option. The width of the border drawn around each tab and around the |
| 62 | selected page. The default is <strong>2</strong>.</p> |
| 63 | |
| 64 | |
| 65 | </dd></dl> |
| 66 | <a name=option.createcommand></a> |
| 67 | <dl><dt> <strong>createcommand |
| 68 | </strong></dt><dd> |
| 69 | Specifies a function to call when a page is selected for the first |
| 70 | time. The function is called with a single argument, which is the |
| 71 | name of the selected page, and is called before the <strong>raisecommand</strong> |
| 72 | function. This allows the creation of the page contents to be |
| 73 | deferred until the page is first displayed. The default is <strong>None</strong>.</p> |
| 74 | |
| 75 | |
| 76 | </dd></dl> |
| 77 | <a name=option.lowercommand></a> |
| 78 | <dl><dt> <strong>lowercommand |
| 79 | </strong></dt><dd> |
| 80 | Specifies a function to call when the selected page is replaced |
| 81 | with a new selected page. The function is called with a single |
| 82 | argument, which is the name of the previously selected page, and |
| 83 | is called before the <strong>createcommand</strong> or <strong>raisecommand</strong> functions. The default is <strong>None</strong>.</p> |
| 84 | |
| 85 | |
| 86 | </dd></dl> |
| 87 | <a name=option.pagemargin></a> |
| 88 | <dl><dt> <strong>pagemargin |
| 89 | </strong></dt><dd> |
| 90 | Initialisation option. The margin (in pixels) around the selected page inside the |
| 91 | notebook's page border. The default is <strong>4</strong>.</p> |
| 92 | |
| 93 | |
| 94 | </dd></dl> |
| 95 | <a name=option.raisecommand></a> |
| 96 | <dl><dt> <strong>raisecommand |
| 97 | </strong></dt><dd> |
| 98 | Specifies a function to call when a new page is selected. The |
| 99 | function is called with a single argument, which is the name of |
| 100 | the selected page. The default is <strong>None</strong>.</p> |
| 101 | |
| 102 | |
| 103 | </dd></dl> |
| 104 | <a name=option.tabpos></a> |
| 105 | <dl><dt> <strong>tabpos |
| 106 | </strong></dt><dd> |
| 107 | Initialisation option. Specifies the location of the tabs. If <strong>'n'</strong>, tabs are created |
| 108 | for each page and positioned at the top of the notebook. If |
| 109 | <strong>None</strong>, no tabs are created, in which case another selection |
| 110 | widget can be used to select pages by calling the <code>selectpage()</code> |
| 111 | method. The default is <strong>'n'</strong>.</p> |
| 112 | |
| 113 | |
| 114 | </dd></dl> |
| 115 | </dd> |
| 116 | <dt> <h3>Components</h3></dt><dd> |
| 117 | Components created by this megawidget and its base |
| 118 | classes are described below.<p></p> |
| 119 | <a name=component.hull></a> |
| 120 | <dl><dt> <strong>hull |
| 121 | </strong></dt><dd> |
| 122 | This acts as the body for the megawidget. The contents of the |
| 123 | megawidget are created as canvas items and positioned in the |
| 124 | hull using the canvas coordinate system. By default, this component is a Tkinter.Canvas.</p> |
| 125 | |
| 126 | |
| 127 | </dd></dl> |
| 128 | </dd> |
| 129 | <dt> <h3>Dynamic components</h3></dt><dd> |
| 130 | <p> |
| 131 | Page and tab components are created dynamically by the <code>add()</code> |
| 132 | and <code>insert()</code> methods. By default, the pages are of type |
| 133 | Tkinter.Frame and are created with a component group of <strong>Page</strong> |
| 134 | and the tabs are of type Tkinter.Button and are created with a |
| 135 | component group of <strong>Tab</strong>.</p> |
| 136 | <p> </p> |
| 137 | |
| 138 | |
| 139 | |
| 140 | </dd> |
| 141 | <a name=methods></a> |
| 142 | <dt> <h3>Methods</h3></dt><dd> |
| 143 | Only methods specific to this megawidget are described below. |
| 144 | For a description of its inherited methods, see the |
| 145 | manual for its base class |
| 146 | <strong><a href="MegaArchetype.html#methods">Pmw.MegaArchetype</a></strong>. |
| 147 | In addition, methods from the |
| 148 | <strong>Tkinter.Canvas</strong> class |
| 149 | are forwarded by this megawidget to the |
| 150 | <strong>hull</strong> component. |
| 151 | <p></p> |
| 152 | <a name=method.add></a> |
| 153 | <dl><dt> <strong>add</strong>(<em>pageName</em>, **<em>kw</em>)</dt><dd> |
| 154 | Add a page at the end of the notebook. See the <code>insert()</code> method |
| 155 | for full details.</p> |
| 156 | |
| 157 | |
| 158 | </dd></dl> |
| 159 | <a name=method.delete></a> |
| 160 | <dl><dt> <strong>delete</strong>(*<em>pageNames</em>)</dt><dd> |
| 161 | Delete the pages given by <em>pageNames</em> from the notebook. Each of |
| 162 | the <em>pageNames</em> may have any of the forms accepted by the |
| 163 | <code>index()</code> method.</p> |
| 164 | <p> If the currently selected page is deleted, then the next page, in |
| 165 | index order, is selected. If the <strong>end</strong> page is deleted, then the |
| 166 | previous page is selected.</p> |
| 167 | |
| 168 | |
| 169 | |
| 170 | </dd></dl> |
| 171 | <a name=method.getcurselection></a> |
| 172 | <dl><dt> <strong>getcurselection</strong>()</dt><dd> |
| 173 | Return the name of the currently selected page.</p> |
| 174 | |
| 175 | |
| 176 | </dd></dl> |
| 177 | <a name=method.index></a> |
| 178 | <dl><dt> <strong>index</strong>(<em>index</em>, <em>forInsert</em> = <strong>0</strong>)</dt><dd> |
| 179 | Return the numerical index of the page corresponding to <em>index</em>. |
| 180 | This may be specified in any of the following forms:</p> |
| 181 | <dl><dt><em>name</em></dt><dd>Specifies the page labelled <em>name</em>.<p></p> |
| 182 | |
| 183 | </dd> |
| 184 | <dt><em>number</em></dt><dd>Specifies the page numerically, where <strong>0</strong> corresponds to |
| 185 | the first page.<p></p> |
| 186 | |
| 187 | </dd> |
| 188 | <dt><strong>Pmw.END</strong></dt><dd>Specifies the last page.<p></p> |
| 189 | |
| 190 | </dd> |
| 191 | <dt><strong>Pmw.SELECT</strong></dt><dd>Specifies the currently selected page.<p></p> |
| 192 | |
| 193 | </dd></dl> |
| 194 | <p> If <em>forInsert</em> is true, <strong>Pmw.END</strong> returns the number of pages |
| 195 | rather than the index of the last page.</p> |
| 196 | |
| 197 | |
| 198 | |
| 199 | </dd></dl> |
| 200 | <a name=method.insert></a> |
| 201 | <dl><dt> <strong>insert</strong>(<em>pageName</em>, <em>before</em> = <strong>0</strong>, **<em>kw</em>)</dt><dd> |
| 202 | Add a page to the notebook as a component named <em>pageName</em>. The |
| 203 | page is added just before the page specified by <em>before</em>, which |
| 204 | may have any of the forms accepted by the <code>index()</code> method. If |
| 205 | <strong>tabpos</strong> is not <strong>None</strong>, also create a tab as a component named |
| 206 | <em>pageName</em>-<strong>tab</strong>. Keyword arguments prefixed with <strong>page_</strong> or |
| 207 | <strong>tab_</strong> are passed to the respective constructors when creating the |
| 208 | page or tab. If the <strong>tab_text</strong> keyword argument is not given, the |
| 209 | <strong>text</strong> option of the tab defaults to <em>pageName</em>. If a page is |
| 210 | inserted into an empty notebook, the page is selected. To add a |
| 211 | page to the end of the notebook, use <code>add()</code>. The method returns |
| 212 | the <em>pageName</em> component widget.</p> |
| 213 | |
| 214 | |
| 215 | </dd></dl> |
| 216 | <a name=method.nextpage></a> |
| 217 | <dl><dt> <strong>nextpage</strong>(<em>pageIndex</em> = <strong>None</strong>)</dt><dd> |
| 218 | If <em>pageIndex</em> is <strong>None</strong>, then select the page after the |
| 219 | currently selected page. Otherwise select the page after |
| 220 | <em>pageIndex</em>, which may have any of the forms accepted by the |
| 221 | <code>index()</code> method.</p> |
| 222 | |
| 223 | |
| 224 | </dd></dl> |
| 225 | <a name=method.page></a> |
| 226 | <dl><dt> <strong>page</strong>(<em>pageIndex</em>)</dt><dd> |
| 227 | Return the frame component widget of the page <em>pageIndex</em>, where |
| 228 | <em>pageIndex</em> may have any of the forms accepted by the <code>index()</code> |
| 229 | method.</p> |
| 230 | |
| 231 | |
| 232 | </dd></dl> |
| 233 | <a name=method.pagenames></a> |
| 234 | <dl><dt> <strong>pagenames</strong>()</dt><dd> |
| 235 | Return a list of the names of the pages, in display order.</p> |
| 236 | |
| 237 | |
| 238 | </dd></dl> |
| 239 | <a name=method.previouspage></a> |
| 240 | <dl><dt> <strong>previouspage</strong>(<em>pageIndex</em> = <strong>None</strong>)</dt><dd> |
| 241 | If <em>pageIndex</em> is <strong>None</strong>, then select the page before the |
| 242 | currently selected page. Otherwise select the page before |
| 243 | <em>pageIndex</em>, which may have any of the forms accepted by the |
| 244 | <code>index()</code> method.</p> |
| 245 | |
| 246 | |
| 247 | </dd></dl> |
| 248 | <a name=method.recolorborders></a> |
| 249 | <dl><dt> <strong>recolorborders</strong>()</dt><dd> |
| 250 | Change the color of the page and tab borders. This method is |
| 251 | required because the borders are created as canvas polygons and |
| 252 | hence do not respond to normal color changing techniques, such as |
| 253 | <code>Pmw.Color.changecolor()</code>.</p> |
| 254 | |
| 255 | |
| 256 | </dd></dl> |
| 257 | <a name=method.selectpage></a> |
| 258 | <dl><dt> <strong>selectpage</strong>(<em>page</em>)</dt><dd> |
| 259 | Select <em>page</em> to be the currently selected page. The page will be |
| 260 | raised and the previous selected page will be lowered.</p> |
| 261 | |
| 262 | |
| 263 | </dd></dl> |
| 264 | <a name=method.setnaturalsize></a> |
| 265 | <dl><dt> <strong>setnaturalsize</strong>(<em>pageNames</em> = <strong>None</strong>)</dt><dd> |
| 266 | Set the width and height of the notebook to be the maximum |
| 267 | requested width and height of the pages specified by <em>pageNames</em>. |
| 268 | If <em>pageNames</em> is <strong>None</strong>, the size of all pages are used to |
| 269 | determine the size of the notebook. Otherwise, <em>pageNames</em> must |
| 270 | be a list of page names whose sizes are to be used to determine |
| 271 | the size of the notebook. This method should be called after all |
| 272 | pages and their contents have been created. It calls |
| 273 | <code>update_idletasks()</code> so that the width and height of the pages can |
| 274 | be determined. This may cause the notebook to flash onto the |
| 275 | screen at the default size before resizing to the natural size.</p> |
| 276 | |
| 277 | |
| 278 | </dd></dl> |
| 279 | <a name=method.tab></a> |
| 280 | <dl><dt> <strong>tab</strong>(<em>pageIndex</em>)</dt><dd> |
| 281 | Return the tab component widget of the page <em>pageIndex</em>, where |
| 282 | <em>pageIndex</em> may have any of the forms accepted by the <code>index()</code> |
| 283 | method. If <strong>tabpos</strong> is <strong>None</strong>, return <strong>None</strong>.</p> |
| 284 | |
| 285 | |
| 286 | </dd></dl> |
| 287 | </dd> |
| 288 | <dt> <h3>Example</h3></dt><dd> |
| 289 | The image at the top of this manual is a snapshot |
| 290 | of the window (or part of the window) produced |
| 291 | by the following code.<p></p> |
| 292 | <pre> |
| 293 | class Demo: |
| 294 | def __init__(self, parent): |
| 295 | # Create and pack the NoteBook. |
| 296 | notebook = Pmw.NoteBook(parent) |
| 297 | notebook.pack(fill = 'both', expand = 1, padx = 10, pady = 10) |
| 298 | |
| 299 | # Add the "Appearance" page to the notebook. |
| 300 | page = notebook.add('Appearance') |
| 301 | notebook.tab('Appearance').focus_set() |
| 302 | |
| 303 | # Create the "Toolbar" contents of the page. |
| 304 | group = Pmw.Group(page, tag_text = 'Toolbar') |
| 305 | group.pack(fill = 'both', expand = 1, padx = 10, pady = 10) |
| 306 | b1 = Tkinter.Checkbutton(group.interior(), text = 'Show toolbar') |
| 307 | b1.grid(row = 0, column = 0) |
| 308 | b2 = Tkinter.Checkbutton(group.interior(), text = 'Toolbar tips') |
| 309 | b2.grid(row = 0, column = 1) |
| 310 | |
| 311 | # Create the "Startup" contents of the page. |
| 312 | group = Pmw.Group(page, tag_text = 'Startup') |
| 313 | group.pack(fill = 'both', expand = 1, padx = 10, pady = 10) |
| 314 | home = Pmw.EntryField(group.interior(), labelpos = 'w', |
| 315 | label_text = 'Home page location:') |
| 316 | home.pack(fill = 'x', padx = 20, pady = 10) |
| 317 | |
| 318 | # Add two more empty pages. |
| 319 | page = notebook.add('Helpers') |
| 320 | page = notebook.add('Images') |
| 321 | |
| 322 | notebook.setnaturalsize() |
| 323 | |
| 324 | </pre> |
| 325 | </dd> |
| 326 | </dl> |
| 327 | |
| 328 | <center><P ALIGN="CENTER"> |
| 329 | <IMG SRC = blue_line.gif ALT = "" WIDTH=320 HEIGHT=5> |
| 330 | </p></center> |
| 331 | |
| 332 | |
| 333 | <font size=-1> |
| 334 | <center><P ALIGN="CENTER"> |
| 335 | Pmw 1.2 - |
| 336 | 5 Aug 2003 |
| 337 | - <a href="index.html">Home</a> |
| 338 | <br>Manual page last reviewed: 30 October 1999 |
| 339 | </p></center> |
| 340 | </font> |
| 341 | |
| 342 | </body> |
| 343 | </html> |
| 344 | |