Итак, я работаю над проектом, в котором есть экран входа в систему с возможностью ввода идентификатора и пароля, но затем в графическом интерфейсе я хочу, чтобы при нажатии кнопки «Ввод» он возвращал идентификатор функции. где это называется. Моя программа слишком длинная, поэтому я приведу небольшой пример, чтобы прояснить свою точку зрения.

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

               
0
Ashmit Ranjan 2 Мар 2021 в 10:33

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 будет бессмысленным, поскольку обратные вызовы не могут ничего вернуть. Это было хорошо объяснено в этом сообщении.

ОБНОВЛЕНИЕ

Если вы объявите переменную как 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')
0
AST 2 Мар 2021 в 09:20