使用tkinter遍一段有登录界面 登录后跳转主界面 主界面能够连接mysql并通过学生姓名查询其他信息
时间: 2023-08-07 14:15:33 浏览: 40
下面是一个使用Tkinter实现登录界面、主界面连接MySQL并查询学生信息的示例代码:
```python
import tkinter as tk
import mysql.connector
class Login:
def __init__(self, master):
self.master = master
self.master.title("登录")
self.master.geometry("300x200")
self.label_username = tk.Label(self.master, text="用户名:")
self.label_username.pack()
self.entry_username = tk.Entry(self.master)
self.entry_username.pack()
self.label_password = tk.Label(self.master, text="密码:")
self.label_password.pack()
self.entry_password = tk.Entry(self.master, show="*")
self.entry_password.pack()
self.btn_login = tk.Button(self.master, text="登录", command=self.login)
self.btn_login.pack()
def login(self):
username = self.entry_username.get()
password = self.entry_password.get()
# 连接到MySQL数据库
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
mycursor = mydb.cursor()
# 查询用户信息
query = "SELECT * FROM users WHERE username = %s AND password = %s"
values = (username, password)
mycursor.execute(query, values)
result = mycursor.fetchone()
if result:
# 登录成功,打开主界面
self.master.destroy()
Main(result[0]) # 传递用户ID
else:
# 登录失败,弹出提示框
tk.messagebox.showerror("错误", "用户名或密码错误!")
mycursor.close()
mydb.close()
class Main:
def __init__(self, user_id):
self.master = tk.Tk()
self.master.title("主界面")
self.master.geometry("400x300")
self.label_name = tk.Label(self.master, text="姓名:")
self.label_name.pack()
self.entry_name = tk.Entry(self.master)
self.entry_name.pack()
self.btn_search = tk.Button(self.master, text="查询", command=lambda:self.search(user_id))
self.btn_search.pack()
def search(self, user_id):
name = self.entry_name.get()
# 连接到MySQL数据库
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)
mycursor = mydb.cursor()
# 查询学生信息
query = "SELECT * FROM students WHERE name = %s"
values = (name,)
mycursor.execute(query, values)
result = mycursor.fetchone()
if result:
# 显示查询结果
tk.messagebox.showinfo("查询结果", f"学号:{result[0]}\n姓名:{result[1]}\n年龄:{result[2]}")
else:
# 查询失败,弹出提示框
tk.messagebox.showerror("错误", "找不到该学生!")
mycursor.close()
mydb.close()
if __name__ == "__main__":
root = tk.Tk()
Login(root)
root.mainloop()
```
在上面的代码中,我们首先实现了一个`Login`类,这个类用于显示登录界面,并处理用户登录操作。我们使用了`mysql.connector`模块连接到MySQL数据库,并查询用户信息。如果登录成功,我们使用`self.master.destroy()`关闭登录窗口,然后打开一个新的`Main`窗口。
`Main`类用于显示主界面,并处理查询学生信息的操作。在查询学生信息时,我们再次使用了`mysql.connector`模块连接到MySQL数据库,并查询学生信息。如果查询成功,我们使用`tk.messagebox.showinfo()`方法显示查询结果。
最后,我们在`if __name__ == "__main__":`中创建了一个`Login`对象,并使用`root.mainloop()`启动Tkinter的事件循环。