【问题标题】:How to return a value from one function to other using a button in tkinter如何使用 tkinter 中的按钮将值从一个函数返回到另一个函数
【发布时间】:2021-05-31 17:48:51
【问题描述】:

所以,我正在做一个项目,其中有一个登录屏幕,可以选择输入 id 和密码,但是在 GUI 中,我希望当单击“Enter”按钮时,它应该返回 id到调用 is 的函数。我的程序太长,所以我将举一个小例子来说明我的观点。

def func3():
       cred = func1()
       print(cred)
   def func1(): #Function for creating the GUI
       root = Tk()
       def func2(): #Function for getting the data and comparing with data from MySQL
           id = '123' #from entry widget
           flag = 0 
           # Comparison done: flag now equals 0 or 1
           if flag == 1: #When data matches
               return id
       btn = Button(master=root,text="Enter",command=func2) #This button should compare and return the id
       btn.pack()

               

【问题讨论】:

  • flag 是做什么的?
  • @Cool Cloud 它只是用来指示 id 是否匹配,如果匹配,flag 将被赋予值 1 否则保持 0。如果 flag = 1 将打开下一个窗口或者如果flag = 0 ,“错误的凭据”将在标签的帮助下显示在窗口上。
  • @AST 应该是这样的,实际比较是在flag声明之后进行的(=0)
  • @AshmitRanjan retun 的值是没有用的,已经解释好了here
  • 将其赋值给一个变量并将其传递给另一个函数或使用global varname

标签: python function tkinter button return


【解决方案1】:

据我了解,您正在寻找这样的东西

from tkinter import *

def verify():
    global id_
    id_=id_entry.get()
    if id_==ID and pass_entry.get()==PASS:
        print('Success')
    else:
        print('Invalid')

root=Tk()

id_entry=Entry(root)
id_entry.pack()
pass_entry=Entry(root)
pass_entry.pack()
ent_button=Button(root,text='Enter',command=verify)
ent_button.pack()

ID='example'
PASS='password'

root.mainloop()

在这种情况下使用retrun 将毫无意义,因为回调不能真正返回任何内容。在this 帖子中已经很好地解释了。

更新

如果将变量声明为global,则可以从代码中的任何位置访问它

def verify():
    global id_
    id_=id_entry.get()
    if id_==ID and pass_entry.get()==PASS:
        success()
    else:
        print('Invalid')

def success():
    print(id_,'logged in successfully')

如果你不想使用global,那么你可以将它传递给目标函数

def verify():
    id_=id_entry.get()
    if id_==ID and pass_entry.get()==PASS:
        success(id_)
    else:
        print('Invalid')

def success(id_):
    print(id_,'logged in successfully')

【讨论】:

  • 如果 id 和密码匹配,您的代码对于显示消息是正确的,但我真正想做的是获取您创建的 _id 变量并将其传递给另一个函数,以便我知道正在登录的人。
  • @AshmitRanjan 继续并传递给另一个函数function(id_),那时您不需要将其设为全局。我已经更新了答案。
猜你喜欢
  • 2015-07-16
  • 1970-01-01
  • 2021-08-14
  • 2019-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
相关资源
最近更新 更多