Martin v. Löwis | 8ec03e0 | 2002-03-17 18:19:13 +0000 | [diff] [blame] | 1 | # -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 2 | # |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 3 | # $Id$ |
| 4 | # |
| 5 | # Tix Demostration Program |
| 6 | # |
| 7 | # This sample program is structured in such a way so that it can be |
Martin v. Löwis | 8ec03e0 | 2002-03-17 18:19:13 +0000 | [diff] [blame] | 8 | # executed from the Tix demo program "tixwidgets.py": it must have a |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 9 | # procedure called "RunSample". It should also have the "if" statment |
| 10 | # at the end of this file so that it can be run as a standalone |
| 11 | # program. |
| 12 | |
| 13 | # This file demonstrates the use of the tixNoteBook widget, which allows |
| 14 | # you to lay out your interface using a "notebook" metaphore |
| 15 | # |
| 16 | import Tix |
| 17 | |
| 18 | def RunSample(w): |
| 19 | global root |
| 20 | root = w |
| 21 | |
| 22 | # We use these options to set the sizes of the subwidgets inside the |
| 23 | # notebook, so that they are well-aligned on the screen. |
| 24 | prefix = Tix.OptionName(w) |
| 25 | if prefix: |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 26 | prefix = '*'+prefix |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 27 | else: |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 28 | prefix = '' |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 29 | w.option_add(prefix+'*TixControl*entry.width', 10) |
| 30 | w.option_add(prefix+'*TixControl*label.width', 18) |
| 31 | w.option_add(prefix+'*TixControl*label.anchor', Tix.E) |
| 32 | w.option_add(prefix+'*TixNoteBook*tagPadX', 8) |
| 33 | |
| 34 | # Create the notebook widget and set its backpagecolor to gray. |
| 35 | # Note that the -backpagecolor option belongs to the "nbframe" |
| 36 | # subwidget. |
| 37 | nb = Tix.NoteBook(w, name='nb', ipadx=6, ipady=6) |
| 38 | nb['bg'] = 'gray' |
| 39 | nb.nbframe['backpagecolor'] = 'gray' |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 40 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 41 | # Create the two tabs on the notebook. The -underline option |
| 42 | # puts a underline on the first character of the labels of the tabs. |
| 43 | # Keyboard accelerators will be defined automatically according |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 44 | # to the underlined character. |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 45 | nb.add('hard_disk', label="Hard Disk", underline=0) |
| 46 | nb.add('network', label="Network", underline=0) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 47 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 48 | nb.pack(expand=1, fill=Tix.BOTH, padx=5, pady=5 ,side=Tix.TOP) |
| 49 | |
| 50 | #---------------------------------------- |
| 51 | # Create the first page |
| 52 | #---------------------------------------- |
| 53 | # Create two frames: one for the common buttons, one for the |
| 54 | # other widgets |
| 55 | # |
| 56 | tab=nb.hard_disk |
| 57 | f = Tix.Frame(tab) |
| 58 | common = Tix.Frame(tab) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 59 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 60 | f.pack(side=Tix.LEFT, padx=2, pady=2, fill=Tix.BOTH, expand=1) |
| 61 | common.pack(side=Tix.RIGHT, padx=2, fill=Tix.Y) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 62 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 63 | a = Tix.Control(f, value=12, label='Access time: ') |
| 64 | w = Tix.Control(f, value=400, label='Write Throughput: ') |
| 65 | r = Tix.Control(f, value=400, label='Read Throughput: ') |
| 66 | c = Tix.Control(f, value=1021, label='Capacity: ') |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 67 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 68 | a.pack(side=Tix.TOP, padx=20, pady=2) |
| 69 | w.pack(side=Tix.TOP, padx=20, pady=2) |
| 70 | r.pack(side=Tix.TOP, padx=20, pady=2) |
| 71 | c.pack(side=Tix.TOP, padx=20, pady=2) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 72 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 73 | # Create the common buttons |
| 74 | createCommonButtons(common) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 75 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 76 | #---------------------------------------- |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 77 | # Create the second page |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 78 | #---------------------------------------- |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 79 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 80 | tab = nb.network |
| 81 | |
| 82 | f = Tix.Frame(tab) |
| 83 | common = Tix.Frame(tab) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 84 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 85 | f.pack(side=Tix.LEFT, padx=2, pady=2, fill=Tix.BOTH, expand=1) |
| 86 | common.pack(side=Tix.RIGHT, padx=2, fill=Tix.Y) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 87 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 88 | a = Tix.Control(f, value=12, label='Access time: ') |
| 89 | w = Tix.Control(f, value=400, label='Write Throughput: ') |
| 90 | r = Tix.Control(f, value=400, label='Read Throughput: ') |
| 91 | c = Tix.Control(f, value=1021, label='Capacity: ') |
| 92 | u = Tix.Control(f, value=10, label='Users: ') |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 93 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 94 | a.pack(side=Tix.TOP, padx=20, pady=2) |
| 95 | w.pack(side=Tix.TOP, padx=20, pady=2) |
| 96 | r.pack(side=Tix.TOP, padx=20, pady=2) |
| 97 | c.pack(side=Tix.TOP, padx=20, pady=2) |
| 98 | u.pack(side=Tix.TOP, padx=20, pady=2) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 99 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 100 | createCommonButtons(common) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 101 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 102 | def doDestroy(): |
| 103 | global root |
| 104 | root.destroy() |
| 105 | |
| 106 | def createCommonButtons(master): |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 107 | ok = Tix.Button(master, name='ok', text='OK', width=6, |
| 108 | command=doDestroy) |
| 109 | cancel = Tix.Button(master, name='cancel', |
| 110 | text='Cancel', width=6, |
| 111 | command=doDestroy) |
| 112 | |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 113 | ok.pack(side=Tix.TOP, padx=2, pady=2) |
Tim Peters | 182b5ac | 2004-07-18 06:16:08 +0000 | [diff] [blame^] | 114 | cancel.pack(side=Tix.TOP, padx=2, pady=2) |
Martin v. Löwis | b21cb5f | 2001-03-21 07:42:07 +0000 | [diff] [blame] | 115 | |
| 116 | if __name__ == '__main__': |
| 117 | root = Tix.Tk() |
| 118 | RunSample(root) |
| 119 | root.mainloop() |