Всем привет. С python и ООП я не давно. Принял решение писаль диплом на связке python pygtk gtk glade. Для практики и тренировки решил реализовать какую штуку:
Вот такой код реализует горизонтальное меню под заголовком экрана с элементами File и Edit. gtk.MenuBar как и gtk.MenuItem - это подклассы абстрактного базового класса gtk.MenuShell()
При организации такого меню необходимо добавлять элементы методом append, и отображать их.
Я хочу написать класс (наверное он должен быть наследником) подобный gtk.MenuBar, только который уже в своем определении имеет какие либо элементы меню, а также при вызове метода show() появлялись бы и меню и его элементы.
Сделал так :), но чую IMHO полная фигня как я сделал:((((
Буду рад всем коментам.
Вот такой код реализует горизонтальное меню под заголовком экрана с элементами File и Edit. gtk.MenuBar как и gtk.MenuItem - это подклассы абстрактного базового класса gtk.MenuShell()
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.mainMenu = gtk.MenuBar()
menuItem1 = gtk.MenuItem("_File")
menuItem2 = gtk.MenuItem("_Edit")
self.VBox1 = gtk.VBox(False, 0)
self.window.set_default_size(800,600)
self.window.add(self.VBox1)
self.VBox1.pack_start(self.mainMenu, False, False, 0)
list = [menuItem1, menuItem2]
for i in list:
self.mainMenu.append(menuItem1)
self.VBox1.show()
self.mainMenu.show()
menuItem1.show()
menuItem2.show()
self.window.show() При организации такого меню необходимо добавлять элементы методом append, и отображать их.
Я хочу написать класс (наверное он должен быть наследником) подобный gtk.MenuBar, только который уже в своем определении имеет какие либо элементы меню, а также при вызове метода show() появлялись бы и меню и его элементы.
Сделал так :), но чую IMHO полная фигня как я сделал:((((
#!/usr/bin/env python
try:
import pygtk
pygtk.require("2.0")
except:
print "Error import pygtk"
sys.exit(1)
try:
import gtk
except:
print "Error import gtk"
sys.exit(1)
class myShell (gtk.MenuShell):
def myItem (self, list):
map (lambda i : self.append(i), list)
map (lambda i : i.show(), list)
def __init__(self):
gtk.MenuShell.__init__(self)
myItem1 = gtk.MenuItem("_File")
myItem2 = gtk.MenuItem("_Options")
myItem3 = gtk.MenuItem("_Run")
myItem4 = gtk.MenuItem("_Help")
list = [myItem1, myItem2, myItem3, myItem4]
self.myItem(list)
class myBar (myShell,gtk.MenuBar):
def __init__(self):
myShell.__init__(self)
gtk.MenuBar.__init__(self)
#print issubclass(myBar, gtk.MenuBar)
if __name__ == "__main__":
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
mainMenu = myBar()
VBox1 = gtk.VBox(False, 0)
#print mainMenu.get_children()
window.add(VBox1)
VBox1.pack_start(mainMenu, False, False, 0)
window.set_default_size(800,600)
window.connect("destroy", gtk.main_quit)
VBox1.show()
mainMenu.show()
window.show()
gtk.main()
Буду рад всем коментам.
Last edited Jan. 14, 2009, 11:21 p.m.