Profilo di stix77

Nome stix77
Indirizzo email n/a
Messaggi112
  • Re: programmazione ad oggetti con Tkinter
    Forum >> Programmazione Python >> GUI
    Uhm, qualche osservazione sparsa.


    Primo, una finestra con 50 textbox è la morte della user experience (e probabilmente anche la morte dell'user).


    Secondo, in qualche modo *devi* cominciare a usare le classi per organizzare quel codice... non puoi certo continuare a sbattere tutto a livello di modulo. Una buona padronanza dei principi dell'OOP è fondamentale per scrivere gui.


    Terzo, non è che ti danno dei punti premio se scrivi codice più corto. Si fattorizza se ha senso farlo, e se si capisce perché lo si sta facendo. Se tutto ciò che ottieni usando un ciclo for è poter dire a te stesso "guarda come sono cool, ho usato un ciclo for per risparmiare cento righe di codice", allora non vale la pena. Il problema delle 50 caselle è un problema di componentistica OOP, non di come fare a risparmiare righe di codice.


    Quarto, non usare il posizionamento assoluto, usa i sizer.


    Quinto, certamente *puoi* fare un ciclo for che ti produce e ti posiziona 50 caselle e 50 etichette, *ma allora* devi anche usare una struttura-dati parallela (che so, una lista), dove conservare un riferimento alle 50 caselle... perché poi suppongo che dovrai accedervi in un secondo momento per leggerne il valore, no? E se ti limiti a fare una cosa del tipo:

    for _ in range(50):
        tb = Text(bla bla)
        tb.place(bla bla)
    
    allora ovviamente a ogni ciclo perdi il riferimento alla casella che hai appena piazzato.





    la questione è che ho circa 30 caselle di input che mi restituiscono 20 caselle di output. ho già fatto qualcosa di simile ma qui che sono arrivato a implementare 6 caselle, mi sono reso conto che il codice stava diventando veramente lungo (anche perchè contiene formule, grafici, ecc) e volevo renderlo più leggibile con l'oop, ma non facendolo di professione è tutto molto ostico..





  • Re: programmazione ad oggetti con Tkinter
    Forum >> Programmazione Python >> GUI
    Daniele aka Palmux said @ 2019-02-27 16:17:29:
    grazie per il suggerimento... male che andava stavo anch'io pensando alla funzione, però in effetti il ciclo for mi risparmierebbe ancora maggiormente righe di codice da scrivere

    adesso ci provo
    Provaci, poi torna qui se non ti viene qualcosa che ci proviamo insieme.

    Cya

    allora ho provato a buttare giù il codice ma mi sono incartato nel senso che non riesco a passare correttamente i dati nel ciclo for




    from tkinter import *
    
    finestra = Tk()
    
    w, h = finestra.winfo_screenwidth(), finestra.winfo_screenheight()
    finestra.geometry("%dx%d+0+0" % (w, h))
    finestra.title("title")
    
    dati1 = ["capacità annua impianto",20,40,200,40,"Ton/anno",300,40]
    dati2 = ["capacità oraria impianto",420,40,640,40,"kg/h",740,40]
    dati3 = ["calore di reazione",420,70,640,70,"kcal/h",740,40]
    
    for i in range(1,4):
        nameObject = "label"+str(i)
        nameObject = Label(finestra, text= dati1[0 ])
        nameObject.place(x = dati1[1 ], y = dati1[2 ])
        nameObject = Text(finestra, height = 1, width=10)
        nameObject.place(x = dati1[3 ], y = dati1[4 ])
        nameObject = Label(finestra, text=dati1[5 ])
        nameObject.place(x = dati1[6 ], y = dati1[7 ])
    finestra.mainloop()





    finora ho scritto quanto sopra, ho provato a creare 3 textbox e funziona solo con la prima, non riesco a fargli flottare le liste di dati all'interno del ciclo for




    se ci provo con un generico dati=dati+str(i) poi all'interno del ciclo dati1 non lo riconosce come la lista che ho scritto prima del ciclo perchè ad esempio dati1[1 ] non è 20 ma per lui è "a" cioè mi indicizza la stringa
  • Re: programmazione ad oggetti con Tkinter
    Forum >> Programmazione Python >> GUI
    grazie per il suggerimento... male che andava stavo anch'io pensando alla funzione, però in effetti il ciclo for mi risparmierebbe ancora maggiormente righe di codice da scrivere



    adesso ci provo
  • programmazione ad oggetti con Tkinter
    Forum >> Programmazione Python >> GUI
    mi servirebbe una mano, non riesco a programmare ad oggetti con tkinter.



    mi spiego meglio: attualmente per inserire una label e una textbox utilizzo 4 linee di codice che sono le seguenti




    label000A = Label(finestra, text="capacità annua impianto")
    label000A.place(x = 20, y = 40)
    
    textBox000 = Text(finestra, height=1, width=10)
    textBox000.place(x = 200, y = 40)


    e tutto funziona.




    il problema è che per comporre un'interfaccia che abbia 50 di quei campi, mi ritrovo a scrivere 50 x 4 = 200 righe di codice quando ne potrei scrivere solo 1 per oggetto passando tutti gli argormenti, tipo:




    oggetto1 = campo("capacità annua impianto",1,10,200,40)




    il problema è che non riesco a scrivere il codice della classe.. ho provato in mille modi

    c'è un anima pia che mi potrebbe aiutare?




    grazie



  • Re: Esercizio confronto elementi di stringhe
    Forum >> Principianti
    eh be, non ha senso mettere la lista fuori dalla funzione se poi non viene usata. anzi è proprio se viene usata anche al di fuori che si rischia di far casino. la lista va messa dentro la funzione così nasce e muore li senza possibilità di utilizzi promiscui... mea culpa





  • Re: Esercizio confronto elementi di stringhe
    Forum >> Principianti
    fatto :batti5:



    dovrebbe essere a posto




    https://pastebin.com/LJ6fVvyU





    non sapevo si potesse fare anche così, ho imparato una cosa nuova
  • Re: Esercizio confronto elementi di stringhe
    Forum >> Principianti
    @A
    di nulla... almeno mi esercito e imparo anch'io




    @RicPol

    adesso purtroppo non ho tempo, dopo proverò a fare quello che hai detto.

    però mentre per il secondo consiglio ci sono arrivato, non saprei così su due piedi come confrontare due liste senza annidare due cicli for. capisco che far come ho fatto io è un dispendio di risorse per la macchina, perchè alla fine se son ad esempio due stringhe da 10 caratteri l'una, invece di far 10 operazioni così facendo ne faccio 100.

    dopo ci provo







    ciao a tutti
  • Re: Esercizio confronto elementi di stringhe
    Forum >> Principianti
    Ciao A, se sei proprio incartato prova a dare un occhio a come l'ho svolto io, qui sotto nel link trovi il mio codice commentato



    https://pastebin.com/RJJGkaeU





    non l'ho postato direttamente per non "spoilerartelo"
  • Re: Esercizio confronto elementi di stringhe
    Forum >> Principianti
    vuoi provare a farlo insieme? vuoi iniziare tu? vuoi un suggerimento?
  • Re: Esercizio confronto elementi di stringhe
    Forum >> Principianti
    per generalizzare invece di scrivere:




    sequenza1 = "tre tigri"


    sequenza2 = "contro tre tigri"




    prova a scrivere:





    sequenza1 = input("sequenza1?: ")

    sequenza2 = input("sequenza2?: ")




    così puoi inserire quello che vuoi