我试图调用我创建的一组子程序,这些子程序使用来自其他子程序的参数。例如,变量'username'应该能够传递给'db_username_searcher'。
def signer():
def login():
username = entry_user.get()
password = entry_user.get()
if username in admin_array:
admin_pass = 'pass'
return username, password, admin_pass
win = tkinter.Tk()
win.title('Sign In')
win.geometry('800x800')
lbl_user = tkinter.Label(win, text='Username ')
entry_user = tkinter.Entry(win)
lbl_pwd = tkinter.Label(win, text='Password ')
entry_pwd = tkinter.Entry(win, show='x')
lbl_output = tkinter.Label(win)
btn_signin = tkinter.Button(win, text='Sign in', command=login)
lbl_user.pack()
entry_user.pack()
lbl_pwd.pack()
entry_pwd.pack()
lbl_output.pack()
btn_signin.pack()
entry_user.focus_set()
win.mainloop()
这是分配和返回“用户名”的代码:
def db_username_sercher(username, password):
conn = sqlite3.connect('passwordDbase.db')
c = conn.cursor()
c.execute("SELECT * FROM passwordDb WHERE employee_username=?", (username, ))
r = c.fetchone()
if r:
message = 'correct'
else:
message = ' '
if message == 'correct':
dbpassword = c.execute("SELECT employee_password FROM passwordDb WHERE employee_username=?", (username, ))
if dbpassword == password:
message = 'correct'
else:
message = ' '
conn.commit()
c.close()
conn.close()
return message
当我尝试调用这两个函数时,我不知道如何处理这些参数:
signer()
db_username_searcher(username, password)
"unresolved reference 'password' "
如何正确调用?,提前致谢。
答案 0 :(得分:0)
有两种方法可以做到这一点。
一:您需要在调用db_username_earcher()
之前添加一行代码,其中catch
将return
signer()
编辑为list
global
多个变量。然后,您可以使用列表索引或您指定用于捕获用户名的变量来传递用户名。
二:你可以使用signer()
个变量,你的catch
函数可以简单地覆盖用户名,这样你就可以毫无困难地传递用户名。
编辑(回应评论):
要a, b, c = signer()
变量,您可以执行a
,其中username
将包含return
的值。
关于列表方法,我的意思是您需要username
列表而不是三个变量,然后您可以使用your_caught_list[0]
直接引用 protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (Context.Request.Headers.AllKeys.Contains("Origin"))
{
Context.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:57062");
Context.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, PATCH, OPTIONS");
Context.Response.AddHeader("Access-Control-Allow-Credentials", "true");
if (Context.Request.HttpMethod == "OPTIONS") Context.Response.End();
}
}
。