[PIPython] wxPython inizializzare wxApp e wxFrame

Cris. Lor. htdcris
Ven 19 Nov 2004 15:16:45 CET


Ciao,
studiando wxPython mi sono imbattuto in alcuni esempi scritti in modo diverso. In particolare ho notato due modi di usare wxFrame e quindi vi volevo chiedere quale dei due fosse migliore o "più raccomandabile" per rendere leggibile ed estendibile lo script: 

wxFrame va utilizzato come istanza creata direttamente all'interno della classe MiaApp derivata da wxApp?? o è meglio utilizzarlo creando prima una classe MioFrame derivata da wxFrame  e poi istanziare MioFrame all'interno della classe MiaApp??
Mi sembra che con il primo metodo si risparmi un po di codice..

ho qui due script di esempio che danno lo stesso identico risultato:

esempio1:

--------------------------------------------------------------------------------


# -*- coding: cp1252 -*-
from wxPython.wx import *

#qui si crea la classe MiaApp derivata da wxApp
class MiaApp(wxApp):
    def OnInit(self):
        #qui si crea un'istanza di wxFrame giusto?
        frame = wxFrame(None, -1, "Finestra semplice")
        #viene mostrata la finestra principale
        frame.Show(1)
        # imposta la finestra principale
        self.SetTopWindow(frame)
        #qui creo la statusbar usando "frame" per riferirmi a wxFrame
        frame.CreateStatusBar()
        return 1

# crea un'istanza della classe MiaApp per poterla poi avviare con .mainloop() giusto?
app = MiaApp()
app.MainLoop()


--------------------------------------------------------------------------------



esempio2:

--------------------------------------------------------------------------------


# -*- coding: cp1252 -*-
from wxPython.wx import *

#creiamo il frame principale che conterrà tutto, ma perche farlo qui??
class MioFrame(wxFrame):
    def __init__(self):
        wxFrame.__init__(self, None, -1, "Finestra semplice")
        #qui creo la statusbar usando "self" per riferirmi a wxFrame 
        self.CreateStatusBar()
        
#qui si crea la classe MiaApp derivata da wxApp
class MiaApp(wxApp):
    def OnInit(self):
        #qui si crea un'istanza di MioFrame che deriva da wxFrame giusto?
        frame = MioFrame()
        #viene mostrata la finestra principale
        frame.Show(1)
        # imposta la finestra principale
        self.SetTopWindow(frame)
        return 1

# crea un'istanza della classe MiaApp per poterla poi avviare con .mainloop() giusto?
app = MiaApp()
app.MainLoop()


--------------------------------------------------------------------------------


 In questi due script ho appositamente inserito una StatusBar così da vedere i due metodi diversi per inserirla,
nel primo mi devo riferire al nome dell'istanza di wxFrame cioè "frame", nel secondo esempio invece inserisco la StatusBar usando "self" dato che mi trovo all'interno della classe MioFrame derivata proprio da wxFrame. In teoria avrei potuto usare anche un terzo sistema, uguale al secondo esempio ma, inserendo la StatusBar dentro la class MiaApp e usando il riferimento "frame" invece di "self".

Quale dei due o tre metodi è il migliore?
Ed in quali casi?
se scelgo il secondo metodo: l'inserimento di altri oggetti nel frame,  la gestione degli eventi, la definizione delle funzioni degli eventi, ecc.. dove dovrei inserirli? Dentro la classe MiaApp o dentro la classe MioFrame?
Che differenza c'è?

Scusate se vi sembrano domande stupide ma classi derivate, istanze ecc.. mi incasinano molto...

Grazie 

Cristian 

(Trieste)




 
 
 --
 Email.it, the professional e-mail, gratis per te: http://www.email.it/f
 
 Sponsor:
 
 Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=&d-5
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://list.zope.it/pipermail/python/attachments/20040519/385740c3/attachment.htm


More information about the Python mailing list