2013-04-25 11 views
11

Sono un novizio della programmazione Python e sto ancora cercando di capire l'uso di lambda. È stato worrking su qualche programma di grafica dopo molto googling ho pensato che ho bisogno di utilizzare questo per i pulsanti a lavorare come ho bisogno diTipoErrore: <lambda>() non accetta argomenti (1 dato)

QUESTO FUNZIONA

mtrf = Button(root, text = "OFF",state=DISABLED,command = lambda:b_clicked("mtrf")) 

ma quando lo faccio lo stesso per scalarla non funziona

leds = Scale(root,from_=0,to=255, orient=HORIZONTAL,state=DISABLED,variable =num,command =lambda:scale_changed('LED')) 

risposta

29

Scale chiama la funzione passata come command con un solo argomento, quindi bisogna usare (anche se th filare via immediatamente).

Cambio:

command=lambda: scale_changed('LED') 

a

command=lambda x: scale_changed('LED') 
+12

'_' è tradizionalmente utilizzato come mar ker di 'argomento inutilizzato': 'comando = lambda _: scale_changed ('LED')' – monoid

4

Questo è presumibilmente perché il comando è passato un argomento che forse non si vuole. Provare a cambiare il lambda da

command=lambda:scale_changed('LED') 

a

command=lambda x:scale_changed('LED') 
2

Si consiglia di consultare Tkinter documentation:

Scale widget

command - A procedure to be called every time the slider is moved. This procedure will be passed one argument, the new scale value. If the slider is moved rapidly, you may not get a callback for every possible position, but you'll certainly get a callback when it settles.


Button widget

command - Function or method to be called when the button is clicked.

Cambia la tua lambda a

command=lambda new_scale_val: scale_changed('LED') 
Problemi correlati