已经定义了变量,却提示未定义(本程序无主main)
此代码放在最前:
```python
def login():
window = Tk()
window.title("登录")
l1 = ttk.Label(window,text="用户:")
e1 = ttk.Entry(window)
l2 = ttk.Label(window,text="密码:")
e2 = ttk.Entry(window,show="*")
b1 = ttk.Button(window,text="登录",command=logins)
b2 = ttk.Button(window,text="退出",command=end)
l1.grid(row=0,column=0,padx=15)
e1.grid(row=0,column=1)
l2.grid(row=1,column=0,padx=15)
e2.grid(row=1,column=1)
b1.grid(row=2,column=0)
b2.grid(row=2,column=1)
window.mainloop()
```python
def logins():
conn = mysql_conn()
cur = conn.cursor()
u_name=e1.get()
u_pwd=e2.get()
select_sql = f'select password from usertext where username = "{u_name}"'
cur.execute(select_sql)
res = cur.fetchone()
if res is None:
print('用户名错误,登录失败')
else:
m_pwd = res[0]
if m_pwd == u_pwd:
print('登录成功', u_name)
win32api.MessageBox(0, "登录成功", "win激活",win32con.MB_OK)
else:
print('密码错误,登录失败')
# 关闭连接
cur.close()
conn.close()
在另一变使用却提示未定义
NameError: name 'e1' is not defined
你是在login里面定义的e1,而你在logins中还在使用e1。当然不行喽
把logins()放进login()函数里,像下面这个位置:
def login():
def logins():
......
window = Tk()
window.title("登录")
......
是不是要引入文件呀
文章:python定义函数 中也许有你想要的答案,请看下吧因为在函数内部定义的变量叫做局部变量只能在当前函数使用,如果想在其他函数也要使用,那么就要定义全局变量:
全局变量的定义方式就是在函数外边定义