Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在单击按钮时存储函数的返回?_Python_Function_Button_Tkinter_Return - Fatal编程技术网

Python 如何在单击按钮时存储函数的返回?

Python 如何在单击按钮时存储函数的返回?,python,function,button,tkinter,return,Python,Function,Button,Tkinter,Return,在我的程序中,当点击一个按钮时,一个函数被执行并完全正常运行,但它的返回语句似乎毫无意义,因为它们不存储任何内容。这就是问题所在 这是节目, button1 = Button(loginPage,text = "Login", fg = "red", command = lambda : loginClicked(username.get(), password.get())) 函数返回语句如下所示 return loggedIn,userID 我知道函数运行是因为其中包含print语句 由

在我的程序中,当点击一个按钮时,一个函数被执行并完全正常运行,但它的返回语句似乎毫无意义,因为它们不存储任何内容。这就是问题所在

这是节目,

button1 = Button(loginPage,text = "Login", fg = "red", command = lambda : loginClicked(username.get(), password.get()))
函数返回语句如下所示

return loggedIn,userID
我知道函数运行是因为其中包含print语句


由于只有在Tkinter用户界面上输入输入并单击按钮时,才能运行该函数,因此如何才能将函数返回的结果存储起来以供以后在程序中使用。

您可以使用任何数据结构来存储这些变量

例如,可以使用前面定义为全局变量的两个变量

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()))

您可以通过在全局范围内定义可变变量并从函数内部存储其中的值来解决此问题。

取消lambda的使用,只需调用函数即可。我看到人们一直在tkinter中使用lambda,而lambda有它的用途,但在这种情况下,它所做的只是使代码更难阅读和维护。根据经验,按钮或绑定应该始终调用函数

然后,通过一个全局变量、一个类、一个数据库或其他任何东西,就可以更容易地了解如何做到这一点

def loginClicked():
    global loggedIn, userID

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

    <do the login>

    loggedIn = True
    userID = name


button1 = Button(..., command = loginClicked)