2014-03-01 45 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'屬性的對象不發送活動。 –

相關問題