web-dev-qa-db-ja.com

TypeError:<lambda>()は引数を取りません(1つ指定)

私はpythonプログラミングの初心者であり、まだラムダの使用を理解しようとしています。多くのググリングの後、いくつかのguiプログラムに悩まされていました。私はそれが必要です

この作品

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

しかし、私がスケールについて同じことをすると動作しません

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

Scaleは、commandとして渡された関数を1つの引数で呼び出します。そのため、この関数を使用する必要があります(ただし、すぐに捨ててください)。

変化する:

command=lambda: scale_changed('LED')

command=lambda x: scale_changed('LED')
38
eumiro

これはおそらく、コマンドにおそらく不要な引数が渡されたためです。からラムダを変更してみてください

command=lambda:scale_changed('LED')

command=lambda x:scale_changed('LED')
5
AlexFoxGill

Tkinterに相談してください ドキュメント

スケールウィジェット

command-スライダーが移動するたびに呼び出されるプロシージャ。このプロシージャには、新しいスケール値という1つの引数が渡されます。スライダーをすばやく動かした場合、すべての可能な位置に対してコールバックが得られるとは限りませんが、落ち着くと確実にコールバックが得られます。


ボタンウィジェット

command-ボタンがクリックされたときに呼び出される関数またはメソッド。

lambda

command=lambda new_scale_val: scale_changed('LED')
2
jamylak