用python tkinter结合sql做的登陆页面

最近要做数据库课设,准备用python来写,那就先做个简单的登录页面练练手,功能包括登录注册删除显示等。后期有时间的话可以添加成绩管理、学籍管理等功能。(大致内容已实现,后续添加挺easy的)过一段时间,再做一个航空机票预定系统,感兴趣的同学们点个赞哈

1.总体效果

主页面

注册

查看所有信息

注册

2.代码实现

2_1.数据库导入及创建表

import sqlite3
con = sqlite3.connect('test.db')
print('创建数据库文件成功')
cursor = con.cursor()  # 创建一个游标
cursor.execute('''
                create table user(
                id     int(10) primary key,
                password int(10))
                ''')
cursor.close()
con.close()

 2_2.界面及业务逻辑功能实现

首先导入包

import sqlite3
import tkinter
import tkinter.messagebox
from tkinter import ttk
from tkinter import *
from PIL import Image,ImageTk

 创建根页面

root = tkinter.Tk()
root.title("账号密码管理系统")
root.geometry('800x600')
canvas = Canvas(root, width=600, height=400, bg='white')
canvas.pack(expand=YES, fill=BOTH)
#这里创建了一个图片标签
image = ImageTk.PhotoImage(file=r"E:/桌面文档/11.jpg")
canvas.create_image(0, 0, image=image, anchor=NW)

Frame_one = tkinter.Frame(root, height=50, width=500)
Label_one = tkinter.Label(Frame_one, text="登录用户 : ")
Entry_one = tkinter.Entry(Frame_one)
Label_one.pack(side='left')
Entry_one.pack()

Frame_one.pack(pady=10)

Frame_two = tkinter.Frame(root)
Label_two = tkinter.Label(Frame_two, text="密码  : ")
Entry_two = tkinter.Entry(Frame_two, show="*")

Label_two.pack(side='left')
Entry_two.pack(side='right')
Frame_two.pack()
Frame_three = tkinter.Frame(root)
Button_one = tkinter.Button(Frame_three, text="登录", command=event1)
Button_two = tkinter.Button(Frame_three, text="注册", command=event2)
Button_delete = tkinter.Button(Frame_three, text="删除", command=delete_event)
Button_three = tkinter.Button(Frame_three, text="所有用户信息", command=event3)

Button_three.pack(side='bottom', pady=10)
Button_one.pack(side='left', pady=30)
Button_delete.pack(side='right', padx=20)
Button_two.pack(side='right', padx=30, pady=30)

Frame_three.pack()
canvas.pack()
root.mainloop()

 登录功能

def event1():
    con = sqlite3.connect('test.db')
    cursor = con.cursor()
    cursor.execute('select * from user')
    all_user_information = cursor.fetchall()
    cursor.close()
    con.close()
    if Entry_one.get() == "" or Entry_two.get() == "":
        tkinter.messagebox.showwarning("提示", "请输入账号和密码!")
    else:
        user_information = int(Entry_one.get()), int(Entry_two.get())
        if user_information in all_user_information:
            tkinter.messagebox.showinfo(title='登陆页面', message='登陆成功!')
            Entry_one.delete(0, "end")
            Entry_two.delete(0, "end")
        else:
            tkinter.messagebox.showerror(title='登陆页面', message='用户名或密码错误!')
            Entry_one.delete(0, "end")
            Entry_two.delete(0, "end")

 注册功能实现

def event2():
    sign = tkinter.Tk()
    sign.title("注册")
    sign.geometry("400x400")

    Frame_1 = tkinter.Frame(sign, height=50, width=500)
    Label_1 = tkinter.Label(Frame_1, text="用户名 : ")
    Entry_1 = tkinter.Entry(Frame_1)
    Label_1.pack(side='left')
    Entry_1.pack()

    Frame_1.pack(pady=10)

    Frame_2 = tkinter.Frame(sign)
    Label_2 = tkinter.Label(Frame_2, text="密码  : ")
    Entry_2 = tkinter.Entry(Frame_2)

    Label_2.pack(side='left')
    Entry_2.pack(side='right')

    Frame_2.pack()

    def insert():
        if Entry_1.get() == "" or Entry_2.get() == "":
            tkinter.messagebox.showwarning("提示", "请输入账号和密码!")
        values = (Entry_1.get(), Entry_2.get())
        con1 = sqlite3.connect('test.db')
        cursor1 = con1.cursor()
        con1.execute("insert into user  values(?,?) ", values)
        tkinter.messagebox.showinfo("提示", "插入成功!")
        cursor1.close()
        con1.commit()
        con1.close()

    Button_1 = tkinter.Button(sign, text='确认', command=insert)
    Button_1.pack(pady=30)

删除功能,使用删除功能,首先输入要管理员密码,这里设置为1

def delete_event():
    def admlogin():
        def delete():
            con = sqlite3.connect('test.db')
            cursor1 = con.cursor()
            cursor = con.cursor()
            x = Entry2.get()
            if cursor.execute("DELETE from user WHERE id=" + x).rowcount != 0:
                cursor.close()
                cursor1.close()
                con.commit()
                con.close()
                tkinter.messagebox.showinfo("提示", "删除成功!")
            elif cursor.execute("DELETE from user WHERE id=" + x).rowcount == 0:
                cursor.close()#这里判断行数是否改变,如未改变就未找到该账号
                tkinter.messagebox.showerror("提示", "该账号不存在!")

        if Entry1.get() == "1":
            login.destroy()
            successlogin = tkinter.Tk()
            successlogin.title("删除")
            successlogin.geometry("400x400")
            Lable2 = tkinter.Label(successlogin, text="请输入要删除的账号:")
            Lable2.pack()
            Entry2 = tkinter.Entry(successlogin)
            Entry2.pack()
            button2 = tkinter.Button(successlogin, text="确认", command=delete)
            button2.pack()
        elif Entry1.get() == "":
            tkinter.messagebox.showwarning("提示", "请输入账号和密码!")
        else:
            tkinter.messagebox.showerror("ERROR", "密码错误!")
            Entry1.delete(0, "end")

 显示信息,这里使用treeview方法将数据库内容展示

def event3():
    output = tkinter.Tk()
    output.title("信息")
    output.geometry("400x400")
    columns = ['账号', '密码']
    table = ttk.Treeview(
        master=output,  # 父容器
        height=20,  # 表格显示的行数,height行
        columns=columns,  # 显示的列
        show='headings',  # 隐藏首列
    )
    table.heading(column='账号', text='账号', anchor='w')  # 定义表头
    table.heading('账号', text='账号', )  # 定义表头
    table.heading('密码', text='密码', )  # 定义表头

    table.column('账号', width=100, minwidth=100)  # 定义列
    table.column('密码', width=150, minwidth=100)  # 定义列

    con2 = sqlite3.connect('test.db')
    cursor2 = con2.cursor()
    x = table.get_children()
    for item in x:
        table.delete(item)
    cursor2.execute('select * from user')
    info_tuple = cursor2.fetchall()
    for item in info_tuple:
        table.insert("", index=0, values=item)
    cursor2.close()
    con2.commit()
    con2.close()
    table.pack(pady=20)

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个简单的示例,展示如何使用PythonSQL Server创建登录界面: 1. 首先,需要安装pyodbc库,它是Python和ODBC(开放数据库连接)之间的接口,允许Python访问ODBC兼容的数据库。可以使用以下命令安装该库: ```python !pip install pyodbc ``` 2. 接下来,需要连接到SQL Server数据库。可以使用以下代码创建一个连接对象: ```python import pyodbc # 定义数据库连接字符串 server = 'localhost' database = 'mydatabase' username = 'myusername' password = 'mypassword' # 创建连接对象 cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) ``` 3. 接下来,可以创建一个登录窗口,让用户输入用户名和密码。可以使用PythonTkinter模块来创建窗口。以下是示例代码: ```python from tkinter import * # 创建窗口 window = Tk() window.title("Login Form") window.geometry('350x200') # 添加标签和文本框 Label(window, text="Username").grid(row=0, column=0) username = Entry(window) username.grid(row=0, column=1) Label(window, text="Password").grid(row=1, column=0) password = Entry(window, show='*') password.grid(row=1, column=1) # 定义登录函数 def login(): # 从文本框中获取用户名和密码 uname = username.get() pwd = password.get() # 在数据库中查找用户 cursor = cnxn.cursor() cursor.execute("SELECT * FROM users WHERE username=? AND password=?", (uname, pwd)) user = cursor.fetchone() # 如果找到用户,则登录成功 if user: messagebox.showinfo("Login", "Login Successful!") else: messagebox.showerror("Login", "Invalid Username or Password.") # 添加登录按钮 Button(window, text="Login", command=login).grid(row=2, column=1) # 运行窗口 window.mainloop() ``` 4. 在上面的代码中,我们定义了一个login函数,用于验证用户输入的用户名和密码是否正确。我们使用SQL Server的SELECT语句从users表中查找用户,然后使用fetchone方法获取第一行结果。如果找到用户,则登录成功,否则显示错误消息框。 5. 最后,可以运行上面的代码,创建一个登录窗口,让用户输入用户名和密码。如果输入正确的用户名和密码,将显示登录成功消息框。否则,将显示错误消息框。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值