Profilo di Argwin

Nome Argwin
Indirizzo email n/a
Messaggi3
  • Re: Richiamare Label
    Forum >> Programmazione Python >> GUI
    Ciao, intanto grazie per la risposta, quel libro che mi hai suggerito lo avevo visto ed in effetti mi pareva molto interessante, solo che l'ultima edizione è del 2011, per questo non l'ho mai preso. Ora sto seguendo dei corsi gratuiti in giro per la rete aiutandomi con un libricino che acquistai un paio di anni fa.
    Ho chiesto quella cosa perchè a sto punto sto imparando le cose man mano che mi si presentano i problemi e volevo capire.

    Non sono ancora arrivato ad argomenti avanzati ed infatti la mia idea era solo quella di provare un semplice programma per testare quanto appreso ma, purtroppo, sono fatto male e mentre faccio le cose cerco sempre di migliorarle, anche cercando di fare cose che non ho ancora studiato.
  • Richiamare Label
    Forum >> Programmazione Python >> GUI
    Ciao a tutti, non ricordo se mi fossi già presentato mesi fa all'atto dell'iscrizione, nel caso mi ripresento, mi chiamo David ed ho ripreso lo studio di Python che ho dovuto lasciare per un pò. Premetto che sono un autodidatta e non sono ancora riuscito a capire come funzionano le classi per cui per una maggiore pulizia del codice volevo mettere le funzioni in un modulo esterno, il problema è che in quel modulo non mi riconosce le Label create nel main. Posto qui il codice per come lo sto mettendo giù ora (come esercizio sto tentando di fare una scheda di D&D):




    from tkinter import *
    
    root = Tk()
    root.geometry("500x200+400+250")
    root.title("Prova")
    
    forza = 10
    destrezza = 10
    costituzione = 10
    intelligenza = 10
    saggezza = 10
    carisma = 10
    
    # Funzioni forza
    
    def aggiungi_forza():
        global forza
        forza += 1
        etichetta_punteggio_forza.config(text=forza,font=12)
        if forza <= 0:
            etichetta_punteggio_forza.config(fg="red")
            etichetta_punteggio_forza.update()
        elif forza >= 11:
            etichetta_punteggio_forza.config(fg="green")
            etichetta_punteggio_forza.update()
        else:
            etichetta_punteggio_forza.config(fg="black")
            etichetta_punteggio_forza.update()
    
    
    def rimuovi_forza():
        global forza
        forza -= 1
        etichetta_punteggio_forza.config(text=forza,font=12)
        if forza <= 0:
            etichetta_punteggio_forza.config(fg="red")
            etichetta_punteggio_forza.update()
        elif forza >= 11:
            etichetta_punteggio_forza.config(fg="green")
            etichetta_punteggio_forza.update()
        else:
            etichetta_punteggio_forza.config(fg="black")
            etichetta_punteggio_forza.update()
    
    # Funzioni destrezza
    
    def aggiungi_destrezza():
        global destrezza
        destrezza += 1
        etichetta_punteggio_destrezza.config(text=destrezza,font=12)
        if destrezza <= 0:
            etichetta_punteggio_destrezza.config(fg="red")
            etichetta_punteggio_destrezza.update()
        elif destrezza >= 11:
            etichetta_punteggio_destrezza.config(fg="green")
            etichetta_punteggio_destrezza.update()
        else:
            etichetta_punteggio_destrezza.config(fg="black")
            etichetta_punteggio_destrezza.update()
    
    
    def rimuovi_destrezza():
        global destrezza
        destrezza -= 1
        etichetta_punteggio_destrezza.config(text=destrezza,font=12)
        if destrezza <= 0:
            etichetta_punteggio_destrezza.config(fg="red")
            etichetta_punteggio_destrezza.update()
        elif destrezza >= 11:
            etichetta_punteggio_destrezza.config(fg="green")
            etichetta_punteggio_destrezza.update()
        else:
            etichetta_punteggio_destrezza.config(fg="black")
            etichetta_punteggio_destrezza.update()
    
    etichetta_forza = Label(root, text="Forza").grid(column=0, row=1)
    pulsante = Button(root, text="+", command=aggiungi_forza, width=1, height=1)
    pulsante.grid(column=1, row=1)
    pulsante = Button(root, text="-", command=rimuovi_forza, width=1, height=1)
    pulsante.grid(column=2, row=1)
    etichetta_punteggio_forza = Label(root, text=forza,font=12)
    etichetta_punteggio_forza.grid(column=3, row=1)
    
    etichetta_destrezza = Label(root, text="Destrezza").grid(column=0, row=2)
    destrezza_piu = Button(root, text="+", command=aggiungi_destrezza, width=1, height=1)
    destrezza_piu.grid(column=1, row=2)
    destrezza_meno = Button(root, text="-", command=rimuovi_destrezza, width=1, height=1)
    destrezza_meno.grid(column=2, row=2)
    etichetta_punteggio_destrezza = Label(root, text=destrezza,font=12)
    etichetta_punteggio_destrezza.grid(column=3, row=2)
    
    root.mainloop()
    
    In pratica le funzioni qui presenti vorrei poterle mettere in un modulo esterno importandolo nel main, anche perchè una volta terminato diverranno tantissime, il problema è che se creo questo modulo, mentre il main mi vede le funzioni nel modulo, il modulo non vede riconosce le Label che ho creato nel Main, mi dice che non hanno una referenza... Sicuramente sarà una sciocchezza ma ci sto picchiando da ore e alla fine ho deciso di fare tutto nel main... Ma in ogni caso voglio capire come si possa fare una cosa del genere.

    Grazie in anticipo.

  • Problema sul ciclo while
    Forum >> Programmazione Python >> GUI
    Ciao a tutti, sono nuovo del forum e del mondo della programmazione...
    Qualche anno fa hanno cominciato a studiare Python ma poi per motivi vari ho mollato...
    Ora l'ho ripreso e sono riuscito ad andare più avanti di allora e sono arrivato, anche se pur arrancando, alla creazione di GUI con Tkinter...
    Ora per prova stavo tentando di creare un generatore di password casuali e,da linea di comando, ci ero riuscito, ma il problema è sopraggiunto una volta che ho provato a rivestirlo con una GUI...


    from tkinter import *
    from random import choice
    
    
    def gen_pass():
    	i = 0
    	b = a.get()
    	while i < b:
    		parola = choice(lista)
    		lblRisultato['text'] = parola
    		i = i + 1
    
    root = Tk()
    root['background'] = "#808080"
    root.geometry("500x250+450+250")
    root.title("GenPass by Argwin")
    
    lista = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "z",
    "A", "B", "C", "D", "E", "F", "G", "H", "I", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "Z",
    1, 2, 3, 4, 5, 6, 7, 8, 9, 0, "_", "-", "!"]
    a = IntVar()
    
    lblDescrizione = Label(root, text="Genera la tua password casuale.", font="Vivaldi 20", fg="#FFFFFF", bg="#808080")
    lblDescrizione.pack()
    
    lblSpaziatore = Label(root, text="", bg="#808080")
    lblSpaziatore.pack()
    
    lbl1 = Label(root, text="Di quanti caratteri vuoi che sia formata la password?", bg="#808080")
    lbl1.pack()
    
    lblSpaziatore = Label(root, text="", bg="#808080")
    lblSpaziatore.pack()
    
    casellaInserimento = Entry(root, textvariable=a)
    casellaInserimento.pack()
    
    lblSpaziatore = Label(root, text="", bg="#808080")
    lblSpaziatore.pack()
    
    btnInvio = Button(root, text="Genera password", command=gen_pass)
    btnInvio.pack()
    
    lblSpaziatore = Label(root, text="", bg="#808080")
    lblSpaziatore.pack()
    
    lblRisultato = Label(bg="white", width=50)
    lblRisultato.pack()
    
    root.mainloop()
    
    
    




    Io vorrei che il ciclo while confrontasse la variabile "b", il cui valore viene preso dall'Entry "casellaInserimento" dato dall'utente e convertito in INT, con la variabile "i" che parte da 0 e ad ogni ciclo incrementa di 1, e che ripeta il ciclo sino a che i 2 numeri non siano uguali...

    Il fatto è che non capisco se il ciclo viene eseguito o meno in quanto sulla label, in Output, esce si un componente della lista casuale, ma uno solo... Io vorrei che ne uscissero tanti quanti è il numero inserito dall'utente e stranamente pare non farlo...

    Con Print funziona,nella label no...






    --- Ultima modifica di Argwin in data 2017-05-05 00:45:22 ---


    --- Ultima modifica di Argwin in data 2017-05-05 00:49:01 ---

    --- Ultima modifica di Argwin in data 2017-05-05 00:50:26 ---