DiegoS
Profilo di
Nome | DiegoS |
---|---|
Indirizzo email | n/a |
Messaggi | 3 |
-
- 2017-10-31 16:09:13
- Re: Novizio con problema tkinter
- Forum >> Programmazione Python >> GUI
- Grazie mille per il chiarimento. Ne stavo uscendo matto
-
- 2017-10-29 19:43:24
- 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 ()
-
- 2017-10-29 19:16:25
- 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
--- Ultima modifica di DiegoS in data 2017-10-29 19:17:05 ---