paolo1958 (Normal User)
Newbie
Messaggi: 4
Iscritto: 17/03/2015
|
Ho scritto un piccolo programma (mi scuso in anticipo se scritto in modo pedestre) per la ricerca di alcuni dati all'interno di una listbox. Il programma non dà alcun errore ed è possibile visualizzare il dato con doppio click su di esso, oppure ricercando il dato (se la lista è molto lunga) tramite una entry. Il problema nasce quando vado ad inserire il codice di questo piccolo programma in un altro programma ben più ampio. Praticamente posso continuare a visualizzare correttamente il dato della lista tramite doppio click su di esso, ma non riesco più ha visualizzare i dati facendo una ricerca tramite la entry (probabilmente il problema si trova nel passagio dei dati dalla funzione "prima" alla funzione "aggiungi_item"). Posto qui di seguito il programma che non da errori e successivamente quello che non funziona. Naturalmenche i risultati del programma vengono stampati nella shell. Ringrazio anticipatamente per l'aiuto che qualcuno potrà e vorrà darmi.
Programma senza errori.
Codice sorgente - presumibilmente Python |
from tkinter import * root = Tk()#crea la finestra e la inserisce in una variabile chiamata prov (potrebbe essere chiamata in qualsiasi altro modo root.title(" CITTA' ITALIANE ") root.geometry('430x480+700+200')# si assegna le dimensioni della finestra contenuto = StringVar() ar=["'Abano.Terme' --- PD --- 35031 Ita ","Abbadia Cerreto --- LO --- 26834 Ita ","Abbadia Lariana --- LC --- 23821 Ita ", "Abbadia.San.Salvatore --- SI --- 53021 Ita ","Abbasanta --- OR --- 09071 Ita ","Abbateggio --- PE --- 65020 Ita ", "Abbiategrasso --- MI --- 20081 Ita ","Abetone --- PT --- 51021 Ita ","Abriola --- PZ --- 85010 Ita ", "Acate --- RG --- 97011 Ita ","Accadia --- FG --- 71021 Ita ","Acceglio --- CN --- 12021 Ita ", "Accettura --- MT --- 75011 Ita ","Acciano --- AQ --- 67020 Ita ","Accumoli --- RI --- 02011 Ita ", "Acerenza --- PZ --- 85011 Ita ","Acerno --- SA --- 84042 Ita ","Acerra --- NA --- 80011 Ita ", "Aci Bonaccorsi --- CT --- 95020 Ita ","Aci Castello --- CT --- 95021 Ita ","Aci Catena --- CT --- 95022 Ita ", "Aci Sant'Antonio --- CT --- 95025 Ita ","Acireale --- CT --- 95024 Ita ","Acquacanina --- MC --- 62035 Ita ", "Acquafondata --- FR --- 03040 Ita ","Acquaformosa --- CS --- 87010 Ita ","Acquafredda --- BS --- 25010 Ita ", "Acqualagna --- PU --- 61041 Ita ","Acquanegra Cremonese --- CR --- 26020 Ita ","Acquanegra sul Chiese --- MN --- 46011 Ita ", "Acquapendente --- VT --- 01021 Ita ","Acquappesa --- CS --- 87020 Ita ","Acquarica del Capo --- LE --- 73040 Ita "] def aggiun_item(): print (miaa_lista.get(miaa_lista.curselection())) ue=(miaa_lista.index(miaa_lista.curselection())) print (ue) ur=miaa_lista.get(miaa_lista.curselection()).split() print(ur) print(ur[0],ur[1]) def aggiun_item2(): global mia_lista #Qui c'è il problema dei comuni con nome composto percui con la clausola split il nome veniva splittato in varie parti, ho sistemato il problema con replace ur=mia_lista.get(mia_lista.curselection()).split() new_citta=ur[0].replace('.',' ')#cambio di una lettera all'interno di una stringa citta_lista=new_citta print(citta_lista) print(ur) def aggiungi_item(): global miaa_lista global RagioneSn global agg_ite miaa_lista = Listbox(root,width=50, height=20) miaa_lista.grid(row=0, column=0) art=RagioneSn.get() art=art.title() #questaistruzione mette la prima lettera sempre in maiuscolo print(art) RagioneS.grid_remove() Lab2=Label(root,text=" \n ").grid(row=4, column=0) Lab6=Label(root,text=" \n ",font=('arial',9,'bold')).grid(row=6, column=0, rowspan=2) if art=="": return prima() weq=[] for item in ar: if (item[0:len(art)])==art: weq.append(item) print(weq) print(len(weq)) if (len(weq))==0: return prima() else: for item in ar: if (item[0:len(art)])==art: miaa_lista.insert(END,item) aggiun_it= Button(root, text = " Valida la scelta ", font=('arial',9,'bold'), command =aggiun_item).grid(row=2, column = 0) lab=Label(root, text="Seleziona la città che ti occorre, dopodichè\n clicca sul tasto 'Valida la scelta' ", fg=('red'),font=('arial',8,'bold' )).grid(row=3, column=0) def prima(): global mia_lista global RagioneSn global RagioneS global Lab2 global Lab3 global agg_ite mia_lista = Listbox(root,width=50, height=20) mia_lista.grid(row=0, column=0) Lab4=Label(root, text="Per scorrere\nl'elenco è\nsufficiente \nutilizzare la\nrotellina del\nmouse, oppure\nselezionare con\nun click una\nqualsiasi voce \nposta all'interno\ndella lista e\nutilizzare i tasti\ndirezionali.....\n'tasti Su e GIU' o\n'PgUp - PgDown' ",\ justify=('left'), fg=('red'),font=('arial',8,'bold' )).grid(row=0, column=1) Lab5=Label(root,text="").grid(row=1, column=0) RagioneSn=StringVar() RagioneS = Entry(root, textvariable=RagioneSn,width=40) RagioneS.grid(row=5, column = 0) for c in ar : mia_lista.insert(END,c) agg_ite=Button(root, text=" Selezionare con doppio click la voce e premere qui", font=('arial',9,'bold'), command=aggiun_item2).grid(row=2, column =0) Lab3=Label(root,text ="").grid(row=3, column=0) Lab2=Label(root,text="(Per fare una ricerca mirata della Città inserire parte\n del nome qui sotto, e premere il tasto 'Trova citta'", fg=('red'),font=('arial',8,'bold' )).grid(row=4, column=0) aggiungi_it= Button(root, text = " Trova città ",font=('arial',9,'bold'), command=aggiungi_item).grid(row=6, column = 0) mia_lista=[] Botto_it= Button(root, text = " Cliccare 'QUI ' per popolare la lista ",command =prima).grid() root.mainloop()
|
PROGRAMMA CON PROBLEMA:
Codice sorgente - presumibilmente Python |
from tkinter import * root1 = Tk()#crea la finestra e la inserisce in una variabile chiamata prov (potrebbe essere chiamata in qualsiasi altro modo root1.state('zoomed') root1.title("Gestionale fatture pro-forma") root1.geometry('640x480+400+150')# si assegna le dimensioni della finestra barra_menu = Menu(root1) s_width = root1.winfo_screenwidth() s_height = root1.winfo_screenheight() s1_width=s_width/100 s1_height=s_height/100 def insana(): root = Tk()#crea la finestra e la inserisce in una variabile chiamata prov (potrebbe essere chiamata in qualsiasi altro modo root.title(" CITTA' ITALIANE ") root.geometry('430x480+700+200')# si assegna le dimensioni della finestra ar=["'Abano.Terme' --- PD --- 35031 Ita ","Abbadia Cerreto --- LO --- 26834 Ita ","Abbadia Lariana --- LC --- 23821 Ita ", "Abbadia.San.Salvatore --- SI --- 53021 Ita ","Abbasanta --- OR --- 09071 Ita ","Abbateggio --- PE --- 65020 Ita ", "Abbiategrasso --- MI --- 20081 Ita ","Abetone --- PT --- 51021 Ita ","Abriola --- PZ --- 85010 Ita ", "Acate --- RG --- 97011 Ita ","Accadia --- FG --- 71021 Ita ","Acceglio --- CN --- 12021 Ita ", "Accettura --- MT --- 75011 Ita ","Acciano --- AQ --- 67020 Ita ","Accumoli --- RI --- 02011 Ita ", "Acerenza --- PZ --- 85011 Ita ","Acerno --- SA --- 84042 Ita ","Acerra --- NA --- 80011 Ita ", "Aci Bonaccorsi --- CT --- 95020 Ita ","Aci Castello --- CT --- 95021 Ita ","Aci Catena --- CT --- 95022 Ita ", "Aci Sant'Antonio --- CT --- 95025 Ita ","Acireale --- CT --- 95024 Ita ","Acquacanina --- MC --- 62035 Ita ", "Acquafondata --- FR --- 03040 Ita ","Acquaformosa --- CS --- 87010 Ita ","Acquafredda --- BS --- 25010 Ita ", "Acqualagna --- PU --- 61041 Ita ","Acquanegra Cremonese --- CR --- 26020 Ita ","Acquanegra sul Chiese --- MN --- 46011 Ita ", "Acquapendente --- VT --- 01021 Ita ","Acquappesa --- CS --- 87020 Ita ","Acquarica del Capo --- LE --- 73040 Ita "] def aggiun_item(): print (miaa_lista.get(miaa_lista.curselection())) ue=(miaa_lista.index(miaa_lista.curselection())) print (ue) ur=miaa_lista.get(miaa_lista.curselection()).split() print(ur) print(ur[0],ur[1]) def aggiun_item2(): global mia_lista #Qui c'è il problema dei comuni con nome composto percui con la clausola split il nome veniva splittato in varie parti, ho sistemato il problema con replace ur=mia_lista.get(mia_lista.curselection()).split() new_citta=ur[0].replace('.',' ')#cambio di una lettera all'interno di una stringa citta_lista=new_citta print(citta_lista) print(ur) def aggiungi_item(): global miaa_lista global RagioneSn global agg_ite miaa_lista = Listbox(root,width=50, height=20) miaa_lista.grid(row=0, column=0) art=RagioneSn.get() art=art.title() #questaistruzione mette la prima lettera sempre in maiuscolo print(art) RagioneS.grid_remove() Lab2=Label(root,text=" \n ").grid(row=4, column=0) Lab6=Label(root,text=" \n ",font=('arial',9,'bold')).grid(row=6, column=0, rowspan=2) if art=="": return prima() weq=[] for item in ar: if (item[0:len(art)])==art: weq.append(item) print(weq) print(len(weq)) if (len(weq))==0: return prima() else: for item in ar: if (item[0:len(art)])==art: miaa_lista.insert(END,item) aggiun_it= Button(root, text = " Valida la scelta ", font=('arial',9,'bold'), command =aggiun_item).grid(row=2, column = 0) lab=Label(root, text="Seleziona la città che ti occorre, dopodichè\n clicca sul tasto 'Valida la scelta' ", fg=('red'),font=('arial',8,'bold' )).grid(row=3, column=0) def prima(): global mia_lista global RagioneSn global RagioneS global Lab2 global Lab3 global agg_ite mia_lista = Listbox(root,width=50, height=20) mia_lista.grid(row=0, column=0) Lab4=Label(root, text="Per scorrere\nl'elenco è\nsufficiente \nutilizzare la\nrotellina del\nmouse, oppure\nselezionare con\nun click una\nqualsiasi voce \nposta all'interno\ndella lista e\nutilizzare i tasti\ndirezionali.....\n'tasti Su e GIU' o\n'PgUp - PgDown' ",\ justify=('left'), fg=('red'),font=('arial',8,'bold' )).grid(row=0, column=1) Lab5=Label(root,text="").grid(row=1, column=0) RagioneSn = StringVar() RagioneS = Entry(root, textvariable=RagioneSn,width=40) RagioneS.grid(row=5, column = 0) for c in ar: mia_lista.insert(END,c) agg_ite=Button(root, text=" Selezionare con doppio click la voce e premere qui", font=('arial',9,'bold'), command=aggiun_item2).grid(row=2, column =0) Lab3=Label(root,text ="").grid(row=3, column=0) Lab2=Label(root,text="(Per fare una ricerca mirata della Città inserire parte\n del nome qui sotto, e premere il tasto 'Trova citta'", fg=('red'),font=('arial',8,'bold' )).grid(row=4, column=0) aggiungi_it= Button(root, text = " Trova città ",font=('arial',9,'bold'), command=aggiungi_item).grid(row=6, column = 0) Botto_it= Button(root, text = " Cliccare 'QUI ' per popolare la lista ",command =prima).grid() root.mainloop() Bott_in= Button(root1, text = " Cliccare 'QUI ' per eseguire la prova del programma ",command =insana).grid() root1.mainloop()
|
|