Darcy_Q 2021-01-20 09:45 采纳率: 0%
浏览 103

用python连接数据库设计登录系统,点击登录以后没反应

 下面是登录模块的代码,运行之后在登录窗口中输入用户名、密码,但点击登录没有反应。运行了一下感觉应该是执行sql语句的问题,但是实在不知道怎么改,求指点。

def usr_login():
    usr_name = entry_user.get()
    usr_pwd = entry_passwd.get()
    index = combobox_login.current()
    if index==0:
        sql = """select * from dbo.student where 学籍号 = "%s" and 学籍号 = "%s" """ % (usr_name,usr_pwd)
        if usr_name and usr_pwd:   # 判断用户名和密码是否为空
            connect = pymssql.connect('127.0.0.1', 'sa', '001226', 'scoresystem')
            cur = connect.cursor()
            try:
                cur.execute(sql)
                results = cur.fetchall()
                print(results)
                if results:   # 察看用户名和密码是否存在 
                    window.destroy() 
                else:
                    tk.messagebox.showinfo(message = '用户名或密码错误,请重试!') 
            except Exception as e:
                connect.rollback()
            finally:
                connect.close() # 关闭连接
        else:
            tk.messagebox.showinfo(message = '用户名或密码不能为空,请重试!') 
    else:
        sql = """select * from dbo.worker where 身份标识 = "%s" and 密码 = "%s" """ % (usr_name,usr_pwd)
        if usr_name and usr_pwd:   # 判断用户名和密码是否为空
            connect = pymssql.connect('127.0.0.1', 'sa', '001226', 'scoresystem')
            cur = connect.cursor()
            try:
                cur.execute(sql)
                results = cur.fetchall()
                print(results)
                if results:   # 察看用户名和密码是否存在 
                    window.destroy() 
                else:
                    tk.messagebox.showinfo(message = '用户名或密码错误,请重试!') 
            except Exception as e:
                connect.rollback()
            finally:
                connect.close() # 关闭连接
        else:
            tk.messagebox.showinfo(message = '用户名或密码不能为空,请重试!')  

#登录界面
#初始化一个window界面
window = tk.Tk()
window.title('体测成绩管理系统')
window.geometry('450x300')

#插入背景图片
#canvas = tk.Canvas(window, height=300, width=500)
#image_file = tk.PhotoImage(file="C:\\Users\\Lenovo\\Desktop\\体测数据\\logo.png")
#image = canvas.create_image(0, 0, anchor='nw', image=image_file)
#canvas.pack(side='top')

#登录界面代码实现
tk.Label(window,text = '用户名 :').place(x =80,y = 90)
tk.Label(window,text = '密码 :').place(x =80,y = 130)
tk.Label(window,text = '登录身份 :').place(x =80,y = 170)
        
entry_user = tk.StringVar()
entry_passwd = tk.StringVar()
entry_usr_name = tk.Entry(window,textvariable = entry_user)
entry_usr_name.place(x = 180,y = 90)
entry_usr_pwd = tk.Entry(window,textvariable = entry_passwd,show ='*')
entry_usr_pwd.place(x = 180,y = 130)

comvalue=tk.StringVar()  #登录身份下拉选框
combobox_login = ttk.Combobox(window,textvariable=comvalue,width=17)
combobox_login["values"]=("学生","管理员")
combobox_login.current(0) #选择第一个
combobox_login.place(x=180, y=170)

btn_login = tk.Button(window,text = '登录',command = usr_login)  #登录界面按钮
btn_login.place(x = 200,y = 220)
                       
window.mainloop()
  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-14 23:36
    关注

    根据你提供的代码,问题可能出现在sql语句拼接上。在第一段代码中,sql语句应该是如下的形式:

    sql = """select * from dbo.student where 学籍号 = '%s' and 密码 = '%s' """ % (usr_name,usr_pwd)
    

    第二段代码中,应该是这样的:

    sql = """select * from dbo.worker where 身份标识 = '%s' and 密码 = '%s' """ % (usr_name,usr_pwd)
    

    注意,上面的语句中,字符串要用单引号括起来。此外,登录界面可能会无法退出,这是因为在if results条件中,程序没有调用window.destroy()。建议将该语句放到两个if条件下面,以确保程序可以正确退出。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题