Beginner GTK question
dashawn888
dashawn at gmail.com
Sun Mar 25 06:57:26 EDT 2007
I have a simple page that I want to display a menu and toolbar. I
have followed the tutorials and have made some customizations to the
basic code snippet found at
http://www.pygtk.org/pygtk2tutorial/examples/uimanager.py
However my customized code does not display the menu bar. It displays
the toolbar though. The terminal output is
--------------------------------------------------------------------------------
gui.py:79: GtkWarning: Quit: missing action
menubar = uimanager.get_widget('/MenuBar')
--------------------------------------------------------------------------------
Line 79 is this
menubar = uimanager.get_widget('/MenuBar')
Thank you for any help in advanced.
Here is the code
--------------------------------------------------------------------------------
#!/usr/bin/env python
#
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
import pygtk
pygtk.require('2.0')
import gtk
class d3_gui:
ui = '''<ui>
<menubar name="MenuBar">
<menu action="File">
<menuitem name="Quit"/>
</menu>
</menubar>
<toolbar name="ToolBar">
<toolitem action="Quit"/>
</toolbar>
</ui>'''
def __init__(self):
# Setup the window
window = gtk.Window()
# Kill the program if it's closed
window.connect("destroy", lambda w: gtk.main_quit())
# Set title and window size
window.set_title("d3vscan")
window.set_size_request(640, 480)
# setup the widget container
vbox = gtk.VBox()
window.add(vbox)
# Setup uimanager for menu and toolbar
uimanager = gtk.UIManager()
# Add accelerator group
accelgroup = uimanager.get_accel_group()
window.add_accel_group(accelgroup)
# Create an ActionGroup
actiongroup = gtk.ActionGroup('d3_gui')
self.actiongroup = actiongroup
# Create actions
actiongroup.add_actions(
[
('Quit', gtk.STOCK_QUIT, '_Quit me!', None,
'Quit the Program', self.quit_d3),
('File', None, '_File')
]
)
actiongroup.get_action('Quit').set_property('short-label',
'_Quit')
# Attach the action group
uimanager.insert_action_group(actiongroup, 0)
# Add a UI description
uimanager.add_ui_from_string(self.ui)
# make menu
menubar = uimanager.get_widget('/MenuBar')
vbox.pack_start(menubar, False)
# Create toolbar
toolbar = uimanager.get_widget('/ToolBar')
vbox.pack_start(toolbar, False)
window.show_all()
return
def quit_d3(self, b):
print 'Quitting program'
gtk.main_quit()
def main():
gtk.main()
return 0
if __name__ == "__main__":
d3 = d3_gui()
gtk.main()
More information about the Python-list
mailing list