Profilo di DiegoS

Nome DiegoS
Indirizzo email n/a
Messaggi3
  • Re: Novizio con problema tkinter
    Forum >> Programmazione Python >> GUI
    Grazie mille per il chiarimento. Ne stavo uscendo matto ;)
  • Re: Piccolo dubbio classi
    Forum >> Principianti
    Tralasciando il codice scritto, per avere un solo elemento in output non converrebbe creare un metodo apposito?
    class Dipendenti:
    
        def __init__(self, nome, cognome):
    
            self.nome = nome
    
            self.cognome = cognome
    
        def StampaNome(self):
    
            print (str("Nome dipendente: ") + str(self.nome))
    
    Dipendente1 = Dipendenti("Luca", "Corda")
    
    Dipendente1.StampaNome ()
    


  • Novizio con problema tkinter
    Forum >> Programmazione Python >> GUI
    Ciao forum :) Sono Diego e mi sono da poco affacciato al mondo della programmazione.
    Vengo al punto: Ho iniziato da poco a lavorare con il modulo tkinter e nonostante inizialmente non abbia avuto problemi, mi sono bloccato. Vi allego il codice

    from tkinter import *
    
    root = Tk()
    
    def CambioColore(color):
        root["bg"] = color
    
    P = Menu(root)
    M1 = Menu(P)
    P.add_cascade (label = "Colore", menu = M1)
    M1.add_command (label = "Sfondo rosso", command = CambioColore("red"))
    M1.add_command (label = "Sfondo verde", command = CambioColore("green"))
    
    root.config (menu = P)


    Come vedete sto lavorando con i menù. Il codice è minimale, lo scopo è solo quello di creare un menù con due opzioni che cambino rispettivamente il colore della finestra principale in rosso e verde. Il problema è il risultato, infatti il codice non appena eseguito crea una finestra totalmente verde (in base all'ultima funzione chiamata), mentre il menù a tendina non esegue alcun comando. Cercando su internet sono riuscito a risolvere il problema cambiando le istruzioni di comando in questo modo:

    M1.add_command (label = "Sfondo rosso", command = lambda: CambioColore("red"))
    M1.add_command (label = "Sfondo verde", command = lambda: CambioColore("green"))
    Il programma così scritto si comporta esattamente come deve. Solo non capisco perché questo risolva il problema. Perché chiamando la funzione con lambda funziona, mentre chiamandola normalmente le funzioni vengono eseguite in automatico? Ci tengo a precisare che mi sono informato sulle funzioni lambda e sul loro funzionamento, ma ancora non ci arrivo :thinking:


    --- Ultima modifica di DiegoS in data 2017-10-29 19:17:05 ---