The Menu Bar (PyGTK)

Linux tutorials and code.
1 post Page 1 of 1
Contributors
User avatar
mikethedj4
VIP - Site Partner
VIP - Site Partner
Posts: 2592
Joined: Thu Mar 25, 2010 4:36 am

The Menu Bar (PyGTK)
mikethedj4
Well I've showed you some basis of Windows, but haven't got into the Menubar yet.

So that's exactly what we're doing today.

So the code below is a basic window, but it has a Label added into it.
Code: Select all
#!/usr/bin/env python

import gtk

class MenuBar(gtk.Window):

   def __init__(self):
	super(MenuBar, self).__init__()
	
	self.set_position(gtk.WIN_POS_CENTER)
	self.set_title("MenuBar")
	self.set_size_request(320, 40)
	self.set_keep_above(False)
	self.connect("destroy", gtk.main_quit, "WM destroy")
	vbox = gtk.VBox(False, 0)
	self.add(vbox)
	label = gtk.Label('An easy, but simple menubar!')
	vbox.pack_start(label, False, False, 10)
	self.show_all()
	  
MenuBar()
gtk.main()
To add the menubar you'd add the following codes.
Code: Select all
mb = gtk.MenuBar()

	filemenu = gtk.Menu()
	filem = gtk.MenuItem("File")
	filem.set_submenu(filemenu)
	
	pinning = gtk.Menu()
	pin = gtk.MenuItem("Pinning")
	pin.set_submenu(pinning)
	filemenu.append(pin)
	
	self.pin = gtk.MenuItem("Pin")
	self.pin.connect("activate", self.pin_me)
	pinning.append(self.pin)
	
	self.no_pin = gtk.MenuItem("Unpin")
	self.no_pin.connect("activate", self.pin_no)
	pinning.append(self.no_pin)
	
	self.custsiz = gtk.MenuItem("Dimensions")
	self.custsiz.connect("activate", self.dimensions)
	filemenu.append(self.custsiz)
	
	self.full = gtk.CheckMenuItem()
	self.full.set_label("Check Me")
	self.full.set_active(False)
	self.full.connect("activate", self.fill_screen)
	filemenu.append(self.full)
	
	separator2 = gtk.SeparatorMenuItem()
	filemenu.append(separator2)
	
	exit = gtk.MenuItem("Exit")
	exit.connect("activate", gtk.main_quit)
	filemenu.append(exit)
	
	mb.append(filem)
Obviously you haft to state your adding a menu, inside the menu, you add a menuitem, as state what they do. In which we already did.

Now here's our full code.
Code: Select all
#!/usr/bin/env python

import gtk

class MenuBar(gtk.Window):

  def __init__(self):
	super(MenuBar, self).__init__()
   
	self.set_position(gtk.WIN_POS_CENTER)
	self.set_title("MenuBar")
	self.set_size_request(320, 40)
	self.set_keep_above(False)
	self.connect("destroy", gtk.main_quit, "WM destroy")
	
	mb = gtk.MenuBar()

	filemenu = gtk.Menu()
	filem = gtk.MenuItem("File")
	filem.set_submenu(filemenu)
	
	pinning = gtk.Menu()
	pin = gtk.MenuItem("Pinning")
	pin.set_submenu(pinning)
	filemenu.append(pin)
	
	self.pin = gtk.MenuItem("Pin")
	self.pin.connect("activate", self.pin_me)
	pinning.append(self.pin)
	
	self.no_pin = gtk.MenuItem("Unpin")
	self.no_pin.connect("activate", self.pin_no)
	pinning.append(self.no_pin)
	
	self.custsiz = gtk.MenuItem("Dimensions")
	self.custsiz.connect("activate", self.dimensions)
	filemenu.append(self.custsiz)
	
	self.full = gtk.CheckMenuItem()
	self.full.set_label("Check Me")
	self.full.set_active(False)
	self.full.connect("activate", self.fill_screen)
	filemenu.append(self.full)
	
	separator2 = gtk.SeparatorMenuItem()
	filemenu.append(separator2)
	
	exit = gtk.MenuItem("Exit")
	exit.connect("activate", gtk.main_quit)
	filemenu.append(exit)
	
	mb.append(filem)
	
	vbox = gtk.VBox(False, 0)
	vbox.pack_start(mb, False, False, 0)
	self.add(vbox)
	
	label = gtk.Label('An easy, but simple menubar!')
	vbox.pack_start(label, False, False, 10)
	self.show_all()
	
  def pin_me(self, w):
	  self.set_keep_above(True)
	  
  def pin_no(self, w):
	  self.set_keep_above(False)

  def dimensions(self, w):
	self.win = gtk.Window(gtk.WINDOW_TOPLEVEL)
	self.win.set_title("Change Dimensions")
	self.win.set_default_size(235, 60)
	self.win.set_resizable(False)
	self.win.connect("destroy", self.win_hide)
	vbox = gtk.VBox(spacing=4)
	hbox = gtk.HBox(spacing=4)
	
	self.entry = gtk.Entry()
	self.entry2 = gtk.Entry()
	self.entry.set_text("width")
	self.entry2.set_text("height")
	hbox.pack_start(self.entry)
	hbox.pack_start(self.entry2)
	
	hbox2 = gtk.HBox(spacing=4)
	ok = gtk.Button("OK")
	ok.connect("clicked", self.change_size)
	hbox2.pack_start(ok)
	exit = gtk.Button("Exit")
	exit.connect("clicked", self.win_hide)
	hbox2.pack_start(exit)
	
	vbox.pack_start(hbox)
	vbox.pack_start(hbox2)
	
	self.win.add(vbox)
	self.win.show_all()
	
  def change_size(self, w):
	width = int(self.entry.get_text())
	height = int(self.entry2.get_text())
	self.set_size_request(width,height)
	
  def win_hide(self, w):
	self.win.hide()
	
  def fill_screen(self, w):
	if self.full.get_label() == "Check Me":
	 self.full.set_label("Uncheck Me")
	 self.full.set_active(True)
	else:
	 self.full.set_label("Check Me")
	 self.full.set_active(False)
     
MenuBar()
gtk.main()
Once again easy, and simple cooll;
1 post Page 1 of 1
Return to “Programming”