2017-02-21 45 views
0

在我的程序中,當一個按鈕被點擊時,一個函數被執行並且運行完全正常,但是它的返回語句似乎是沒有意義的,因爲它們不存儲任何東西。這是問題。如何在單擊按鈕上存儲函數的返回值?

這是程序;

button1 = Button(loginPage,text = "Login", fg = "red", command = lambda : loginClicked(username.get(), password.get())) 

和函數return語句看起來像這樣;

return loggedIn,userID 

我知道該函數是由於其中的print語句而運行的。

由於該功能只能在Tkinter用戶界面上輸入輸入並單擊該按鈕時運行,函數的返回結果如何存儲以便以後在程序中使用。

回答

0

您可以使用任何數據結構來存儲這些變量。

例如,您可以使用前面定義的兩個變量作爲全局變量。

loggedIn = None 
userID = None 

def loginClicked(username, password): 
    global loggedIn 
    global userID 
    loggedIn,userID = username, password 

button1 = Button(loginPage,text = "Login", fg = "red", command = lambda : loginClicked(username.get(), password.get())) 
0

可以通過在全局範圍內限定一個可變變量和從功能上內部存儲在它的值解決這個問題。

1

刪除使用lambda,只需調用一個函數。我發現人們總是在不需要tkinter的情況下使用lambdalambda有它的用處,但在這種情況下,它所做的只是讓代碼難以閱讀和難以維護。作爲一個好的經驗法則,按鈕或綁定應該總是調用一個函數。

然後,用全局變量,類,數據庫或其他任何東西來看如何做到這一點變得更容易。

def loginClicked(): 
    global loggedIn, userID 

    name = username.get() 
    pw = password.get() 

    <do the login> 

    loggedIn = True 
    userID = name 


button1 = Button(..., command = loginClicked) 
相關問題