python GUI界面tkinter,与 MySQL

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
'登录界面'
from PIL import Image,ImageTk
import tkinter as tk
import os
import tkinter.messagebox
# 打开指定的图片文件,缩放至指定尺寸
def get_image(filename,width,heigth):
    im = Image.open(filename).resize((width,heigth))
    return ImageTk.PhotoImage(im)
def login():
    import pymysql
    try:        # 错误与异常,捕捉用户名错误异常
                db = pymysql.connect( #连接 mysql数据库
                host = "localhost",
                user = "root",
                passwd = "123456",
                database = "dms",
                charset='utf8'
                )
                user = entry_user_name.get() # 获取用户输入用户名与密码
                password = entry_user_pd.get()

                mycursor = db.cursor() # 获取游标
                sql = 'select password from users where username=%s'
                sql2 = ([user])
                mycursor.execute(sql,sql2) # 执行查询语句,寻找该用户名对应的密码
                myresult = mycursor.fetchall() 
                for row in myresult:
                    uid = row[4]
                    pd = row[5]
                    if pd == password and user == uid: # 检索出的结果与用户输入的密码一致 执行以下语句
                        tkinter.messagebox.INFO(title='你好',message='登录成功!')
                        break
                    if pd != password and user == uid:
                        tkinter.messagebox.ERROR(title='错误',message='密码错误!')
                    mycursor.close # 关闭游标
                    db.close()  # 关闭数据库连接 
    except LookupError: # 用户名不存在的情况 执行一下语句
                tkinter.messagebox.ERROR(title='错误',message='用户名错误!')
def aaa():
    user = entry_user_name.get()
    l = tk.Label(root,text=user)
    l.pack(side='right')
# 创建根窗口,设定大小,标题
root = tk.Tk()
root.title('学生宿舍信息管理系统')
root.geometry('960x640')
root.maxsize(960,640)
root.minsize(960,640)
# 创建画布,放上要显示的图片,把画布添加在根窗口
canvas_root = tk.Canvas(root,width=960,height=640)
im_root = get_image('C:/Users/Administrator/Desktop/dmsGUI界面/summer.jpg',960,640)
canvas_root.create_image(0,0,anchor='nw',image=im_root)
canvas_root.pack(side='top')
# 登录界面frame
login_frame = tk.Frame(root,bg='#D3D3D3',height=100,width=325)
login_frame.place(x=10,y=630,anchor='sw')
# 标签
user_name = tk.Label(login_frame,bg='#FFFFFF',text='用户名:',font=('Airal',14),width=8,anchor='w')
user_name.place(x=5,y=12,anchor='nw')
user_pd = tk.Label(login_frame,bg='#FFFFFF',text='密码:',font=('Airal',14),width=8,anchor='w')
user_pd.place(x=5,y=62,anchor='nw')
# 输入框
v1 = tk.StringVar()
v2 = tk.StringVar()
entry_user_name = tk.Entry(login_frame,show=None,width=21,border=4,font=('Airal',14),textvariable=v1)
entry_user_name.place(x=100,y=10,anchor='nw')
entry_user_pd = tk.Entry(login_frame,show='*',width=21,border=4,font=('Airal',14),textvariable=v2)
entry_user_pd.place(x=100,y=60,anchor='nw')
# 按钮
login_botton = tk.Button(root,text='登录',font=('Airal',14),width=4,command=login)
login_botton.place(x=340,y=570,anchor='sw')
sign_up_botton = tk.Button(root,text='注册',font=('Airal',14),width=4,command=aaa)
sign_up_botton.place(x=340,y=625,anchor='sw')
root.mainloop()

报错:TypeError: 'str' object is not callable