在我的程序中,当单击一个按钮时,一个函数被执行并且运行完全正常,但它的返回语句似乎毫无意义,因为它们不存储任何东西。这就是问题所在。
这是该计划;
button1 = Button(loginPage,text = "Login", fg = "red", command = lambda : loginClicked(username.get(), password.get()))
并且函数return语句如下所示;
return loggedIn,userID
我知道该函数因其中的print语句而运行。
因为只有当在Tkinter用户界面上输入输入并且单击该按钮时才能运行该功能,所以如何存储该函数的返回结果以供以后在程序中使用。
答案 0 :(得分:1)
删除lambda
的使用,只需调用一个函数即可。我看到人们在不需要lambda
时使用lambda
一直使用def loginClicked():
global loggedIn, userID
name = username.get()
pw = password.get()
<do the login>
loggedIn = True
userID = name
button1 = Button(..., command = loginClicked)
,但在这种情况下,它所做的只是让代码更难以阅读并且难以维护。作为一个好的经验法则,按钮或绑定应始终调用函数。
然后,通过全局变量,类,数据库或其他任何东西,可以更容易地看到如何执行此操作。
{{1}}
答案 1 :(得分: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()))
答案 2 :(得分:0)
您可以通过在全局范围内定义可变变量并在函数内部存储值来解决它。