3

私は、適切なメソッドを実行することによって上ボタンを押すことに反応する小さな Python プログラムを持っています。しかし、これを行う代わりに、紛らわしいエラーが発生します...

from tkinter import *
class App:
    def __init__(self, master):
        self.left = 0
        self.right = 0
        widget = Label(master, text='Hello bind world')
        widget.config(bg='red')            
        widget.config(height=5, width=20)                  
        widget.pack(expand=YES, fill=BOTH)
        widget.bind('<Up>',self.incSpeed)   
        widget.focus()
    def incSpeed(self):
        print("Test")

root = Tk() 
app = App(root)
root.mainloop()

エラーは次のとおりです。

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.2/tkinter/__init__.py", line 1402, in __call__
    return self.func(*args)
TypeError: incSpeed() takes exactly 1 positional argument (2 given)

何が問題なのですか?

4

1 に答える 1

6

incSpeedメソッドは追加の引数を取る必要があります。あなたのものは取るだけですが、イベント引数selfも渡されます。

それを受け入れるように関数の署名を更新します。

def incSpeed(self, event):
    print("Test")
于 2012-09-20T06:46:30.703 に答える