Az alábbi kódrészlet egy Tkinterrel készült gui-s (grafikus felületű) alkalmazás menüjének legenerálását végzi. Ugyanezt a megoldást alkalmaztam a szótanuló programocskámban, ott bevált:
#!/usr/env/python # -*- coding: utf-8 -*- # menüdemo Tkinterrel by sipiatti from Tkinter import * class Alkalmazas(): """Az alkalmazás osztály""" def __init__(self,frame): """Indul az alkalmazás""" # beállítjuk az alkalmazás toplevel frame-jét self.frame=frame self.frame.title('Szótanuló') # menüelemek listakonténere. a menügenerátor ebből dolgozik. ha változtatni kell # egyszerűen a listát kell módosítani. szerkezete: [[menüpont neve,[[menüparancs neve, futtatandó metódus]]]] self.menuelemek=[['menu1', [['almenu1',self.semmi], ['almenu2',self.semmi], ['almenu3',self.semmi], ['almenu4',self.semmi]]], ['menu2', [['almenu1',self.semmi], ['almenu2',self.semmi]]]] # létrehozzuk a menüsávot és csatoljuk az ablakhoz self.menusav_letrehoz() self.frame.config(menu=self.menusav) self.cimke=Label(self.frame,text="Ez egy címke, nem kell semmire",font=("", "24"),fg="darkred") self.cimke.pack() def menusav_letrehoz(self): """Főmenü generáló függvény""" self.menusav=Menu(self.frame) for elem in self.menuelemek: almenu=Menu(self.menusav,tearoff=0) for almenuelem in elem[1]: almenu.add_command( label=almenuelem[0],command=almenuelem[1]) self.menusav.add_cascade(label=elem[0],menu=almenu) def semmi(self): """Mivel ez csak demó, a menüparancsokra történő kattintás nem csinál semmit, azaz pont hogy azt csinál :)""" print "semmi sem történik :)" # gyökér frame létrehozása root=Tk() # alkalmazás példány létrehozása app=Alkalmazas(root) # indulás app.frame.mainloop()
A lényeg a két for cikluson van, amik végig lépkednek az átadott listák elemein. Az ilyen megoldások hallatlanul rugalmassá teszik a kódunkat, illetve ezeket könnyedén fel tudjuk használni más programjainkban is, ami nagyon fontos, mert időt tudunk spórolni a fejlesztéshez.
UI: a szótanulót, ami tulajdonképpen nekem egy ismerkedés volt a Tkinterrel, le lehet tölteni innen
Nincsenek megjegyzések:
Megjegyzés küldése