[PIPython] Costruzione e recupero dinamici

Massimo Cecconi massimo.cecconi
Gio 31 Mar 2005 14:57:47 CEST


Ciao Giovanni, :)

Allora dovrei aver capito il tuo esempio ma non credo che sia quello che 
serve a me ed ora ti spiego più dettagliatamente quello che devo fare:

Ho il mio "form" che ha ben 20 righe e ciascuna di queste righe ha ben 
11 elementi che nella fattispecie sono:
       - 1 TEXT_CTRL
       - 4 COMBO_BOX
       - 6 RADIO (in gruppi da due)

all'inizio creo un dizionario vuoto in questo modo:

parent.Listing = {}

poi ad ogni termine di riga aggiungo al dizionario questo:

parent.Listing[1] = [parent.nSLOT_SLOT_1, parent.MISSION_NAME_SLOT_1, 
parent.AIRCRAFT_NAME_SLOT_1, parent.AIRCRAFT_NUMBER_SLOT_1, 
parent.TYPE_ENTRY_SLOT_1, parent.RADIO_FRA_SI_SLOT_1, 
parent.RADIO_FRA_NO_SLOT_1, parent.RADIO_114B_SI_SLOT_1, 
parent.RADIO_114B_NO_SLOT_1, parent.RADIO_LIMA_SI_SLOT_1, 
parent.RADIO_LIMA_NO_SLOT_1]
       
che in poche parole sono i nomi di tutti gli elementi creati. Alla fine 
dunque, avrò ben 20 elementi nel dizionario ok??


Quando clicco sul pulsante invio, richiamo la funzione che deve inserire 
i dati nel database:

wx.EVT_BUTTON(parent, ID_BUT_CONFIRM_D, ArchiveSlotProgramDay)

nella funzione ArchiveSlotProgramDay ho questo:

db_BSS = sqlite.connect('CF_BSS.db')
BSS = db_BSS.cursor()


Slot_From = 0
    Slot_To = 20

    GET_VALUE = parent.Listing

    while (Slot_From < Slot_To):
        Numeratore = (Slot_From + 1)

        ID_Autoincrement = NextNumIdSlot
       
        LIST = GET_VALUE[Numeratore]

        N_SLOT = LIST[0].GetValue()
        MIX_NAME = LIST[1].GetValue()
        JET_NAME = LIST[2].GetValue()
        JET_NUMBER = LIST[3].GetValue()
        ENTRY_SLOT = LIST[4].GetValue()
        FRA_SI = LIST[5].GetValue()
        FRA_NO = LIST[6].GetValue()
        B114_SI = LIST[7].GetValue()
        B114_NO = LIST[8].GetValue()
        LIMA_SI = LIST[9].GetValue()
        LIMA_NO = LIST[10].GetValue()


e così recupero il valore di ognuno degli elementi che avevo nel form di 
partenza.

Ora dimmi se forse (come probabile), non ho capito io il tuo esempio 
quindi come mi hai detto tu fa la stessa cosa e se è più performante in 
termine di memoria, quindi in prestazioni.

Se invece quello che vorrei io lo posso fare solo nel modo in cui l'ho 
fatto già, oppure c'è un metodo migliore e più performante??

Inoltre quando creo il form sono costretto a scrivere il codice per 
intero oppure c'è un modo per fare si che le varie righe le posso creare 
dinamicamente??  sinceramente ho incontrato problemi. Adesso poi a parte 
che ci impiega circa due o tre secondi nella creazione, a volte lo crea 
a scatti, da cosa può dipendere?? posso avere dei problemi in futuro?? 

Ciao e grazie ancora.... yuk!










Giovanni Porcari ha scritto:

> Il giorno 31/mar/05, alle 10:25, Massimo Cecconi ha scritto:
>
>> Ciao Giovanni, e scusa di che poi?? anzi ti ringrazio per la risposta:)
>>
>> Comunque no, non è quello che cercavo perchè non mi interessano gli 
>> attributi ( a proposito a cosa serve sapere questi attributi?? 
>> d'altronde li ho settati io no?? e cmq a cosa potrebbero servirmi in 
>> futuro??), ma il valore in essi contenuti quindi ad esempio se nel 
>> TEXT_CTRL digito 123 vorrei poter recuperare appunto il valore che è 
>> "123"
>>
>> Spero di essermi spiegato un pochino meglio  ciauz :)
>>
>
> Massimo la getattr serve a questo. Dato il nome 'TEXT_CTRL' ne ritorna 
> il valore. Quindi nel tuo esempio 123.
>
> Ti faccio un esempio
>
> class miaclasse(object):
>     def __init__(self,x,y):
>         self.x=x
>         self.y=y
>
> if __name__=='__main__':
>     s=miaclasse(55,66)
>     print 'x='+getattr(s,'x') # renderà x=55
>     print 'y='+getattr(s,'y') # renderà y=66
>     print 'z='+getattr(s,'z') # solleverà eccezione
>
>     print 'x='+getattr(s,'x','non lo trovo') # renderà x=55
>     print 'y='+ getattr(s,'y','non lo trovo') # renderà y=66
>     print 'z='+getattr(s,'z','non lo trovo') # renderà z= 'non lo trovo'
>
>
>
> se esegui questo codice verrà creato un oggetto s della classe 
> 'miaclasse' e gli attributi x e y
> verranno settati ai valori passati nel costruttore.
>
> Nell esempio vedi l'uso di getattr per prelevare i valori. Nota che la 
> terza print solleva un eccezione perchè
> nel caso l'attributo non esista (z in questo caso) non è stato 
> previsto un default.
>
> Nelle tre print seguenti invece si prevede un default e la richiesta 
> di z fornisce comunque un valore. Di norma si usa per avere un default 
> per valori opzionali.
>
> Spero che ti possa essere utile. Se no significa che non ho davvero 
> capito.
>
> Ciao
> G
>
> _______________________________________________
> La mailing list di python.it
> python a lists.python.it
> http://lists.python.it/cgi-bin/mailman/listinfo/python
>
>



More information about the Python mailing list