2014-03-01 46 views
1

在这段代码中,我尝试将该按钮的命令设置为goRun,并且还将Return密钥绑定到goRun为什么我的按钮可以工作,但不是我的钥匙绑定?

def goRun(): 
    Run.runData(ENTRY=symbolEntry.get(), GREATER=greaterEntry.get(), BETWEEN=betweenEntry.get(), LESSER=lesserEntry.get()) 
    #^ "Run" is a seperate class. 

button = Button(app, text="Go Data", command=goRun, fg="blue") 
button.pack(side="top", pady=2, padx=10) 

app.bind('<Return>', goRun) 

当我运行应用程序,并按下Return键,我得到这个错误:

TypeError: goRun() takes no arguments (1 given) 

但是,当我按下按钮,它运行的命令和工作得很好。

我在做什么错?

+2

您使用的是什么GUI库? –

+1

这几乎是'tkinter'。 –

回答

2

假设您使用的GUI库是tkinter,这是因为当通过按键激活回调时,会传递一个名为event的参数。尝试修改你的函数定义,所以它是这样的:

def goRun(event=None): 

那么,你是为你的函数获得与它没有什么线索做一个参数得到错误。用event=None我们说“当它出现时不要担心这个争论,这没什么。”

你得到这个错误与Return键,因为它给出了这个参数,但它适用于你的Button,因为它不发送参数。

+1

实际上,'event = None'并不意味着“当它出现时不要担心这个争论”。相反,它意味着“我希望在这里有一个论点,但如果我没有得到一个,请将其设置为无”。使用函数既可以作为事件的回调,也可以来自代码中没有事件对象传入的其他地方,比如使用with作为'command'属性的对象不发送活动。 –

相关问题