/usr/share/doc/python-pmw-doc/examples/MenuBar.py is in python-pmw-doc 1.3.2-6build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | title = 'Pmw.MenuBar demonstration'
# Import Pmw from this directory tree.
import sys
sys.path[:0] = ['../../..']
import Tkinter
import Pmw
class Demo:
def __init__(self, parent):
# Create the Balloon.
self.balloon = Pmw.Balloon(parent)
# Create and pack the MenuBar.
menuBar = Pmw.MenuBar(parent,
hull_relief = 'raised',
hull_borderwidth = 1,
balloon = self.balloon)
menuBar.pack(fill = 'x')
self.menuBar = menuBar
# Add some buttons to the MenuBar.
menuBar.addmenu('File', 'Close this window or exit')
menuBar.addmenuitem('File', 'command', 'Close this window',
command = PrintOne('Action: close'),
label = 'Close')
menuBar.addmenuitem('File', 'separator')
menuBar.addmenuitem('File', 'command', 'Exit the application',
command = PrintOne('Action: exit'),
label = 'Exit')
menuBar.addmenu('Edit', 'Cut, copy or paste')
menuBar.addmenuitem('Edit', 'command', 'Delete the current selection',
command = PrintOne('Action: delete'),
label = 'Delete')
menuBar.addmenu('Options', 'Set user preferences')
menuBar.addmenuitem('Options', 'command', 'Set general preferences',
command = PrintOne('Action: general options'),
label = 'General...')
# Create a checkbutton menu item.
self.toggleVar = Tkinter.IntVar()
# Initialise the checkbutton to 1:
self.toggleVar.set(1)
menuBar.addmenuitem('Options', 'checkbutton', 'Toggle me on/off',
label = 'Toggle',
command = self._toggleMe,
variable = self.toggleVar)
self._toggleMe()
menuBar.addcascademenu('Options', 'Size',
'Set some other preferences', traverseSpec = 'z', tearoff = 1)
for size in ('tiny', 'small', 'average', 'big', 'huge'):
menuBar.addmenuitem('Size', 'command', 'Set size to ' + size,
command = PrintOne('Action: size ' + size),
label = size)
menuBar.addmenu('Help', 'User manuals', side = 'right')
menuBar.addmenuitem('Help', 'command', 'About this application',
command = PrintOne('Action: about'),
label = 'About...')
# Create and pack the main part of the window.
self.mainPart = Tkinter.Label(parent,
text = 'This is the\nmain part of\nthe window',
background = 'black',
foreground = 'white',
padx = 30,
pady = 30)
self.mainPart.pack(fill = 'both', expand = 1)
# Create and pack the MessageBar.
self.messageBar = Pmw.MessageBar(parent,
entry_width = 40,
entry_relief='groove',
labelpos = 'w',
label_text = 'Status:')
self.messageBar.pack(fill = 'x', padx = 10, pady = 10)
self.messageBar.message('state', 'OK')
buttonBox = Pmw.ButtonBox(parent)
buttonBox.pack(fill = 'x')
buttonBox.add('Disable\nall', command = menuBar.disableall)
buttonBox.add('Enable\nall', command = menuBar.enableall)
buttonBox.add('Create\nmenu', command = self.add)
buttonBox.add('Delete\nmenu', command = self.delete)
buttonBox.add('Create\nitem', command = self.additem)
buttonBox.add('Delete\nitem', command = self.deleteitem)
# Configure the balloon to displays its status messages in the
# message bar.
self.balloon.configure(statuscommand = self.messageBar.helpmessage)
self.testMenuList = []
def _toggleMe(self):
print 'Toggle value:', self.toggleVar.get()
def add(self):
if len(self.testMenuList) == 0:
num = 0
else:
num = self.testMenuList[-1]
num = num + 1
name = 'Menu%d' % num
self.testMenuList.append(num)
self.menuBar.addmenu(name, 'This is ' + name)
def delete(self):
if len(self.testMenuList) == 0:
self.menuBar.bell()
else:
num = self.testMenuList[0]
name = 'Menu%d' % num
del self.testMenuList[0]
self.menuBar.deletemenu(name)
def additem(self):
if len(self.testMenuList) == 0:
self.menuBar.bell()
else:
num = self.testMenuList[-1]
menuName = 'Menu%d' % num
menu = self.menuBar.component(menuName + '-menu')
if menu.index('end') is None:
label = 'item X'
else:
label = menu.entrycget('end', 'label') + 'X'
self.menuBar.addmenuitem(menuName, 'command', 'Help for ' + label,
command = PrintOne('Action: ' + menuName + ': ' + label),
label = label)
def deleteitem(self):
if len(self.testMenuList) == 0:
self.menuBar.bell()
else:
num = self.testMenuList[-1]
menuName = 'Menu%d' % num
menu = self.menuBar.component(menuName + '-menu')
if menu.index('end') is None:
self.menuBar.bell()
else:
self.menuBar.deletemenuitems(menuName, 0)
class PrintOne:
def __init__(self, text):
self.text = text
def __call__(self):
print self.text
######################################################################
# Create demo in root window for testing.
if __name__ == '__main__':
root = Tkinter.Tk()
Pmw.initialise(root)
root.title(title)
exitButton = Tkinter.Button(root, text = 'Exit', command = root.destroy)
exitButton.pack(side = 'bottom')
widget = Demo(root)
root.mainloop()
|