使用pymsql和tk创建一个python窗口,连接数据库bus,内容时是一个登录和注册界面,若输入正确的用户名和密码可跳转打开已有的python文件MainPage.py,若输入错误显示你输入有误
时间: 2024-02-19 14:59:06 浏览: 72
Python通过GUI图形库wxPython连接oracle数据库实现系统登录、跳转主界面功能(源代码下载)
好的,我来为你解答这个问题。
首先,我们需要安装pymysql和tkinter库。你可以通过以下命令来安装它们:
```
pip install pymysql
```
```
sudo apt-get install python3-tk
```
接下来,我们需要创建一个Python窗口,并在窗口中添加登录和注册界面。你可以使用以下代码:
```python
import tkinter as tk
import pymysql
class BusApp:
def __init__(self, root):
self.root = root
self.root.geometry("400x300")
self.root.title("Bus App")
# 创建登录和注册界面
self.create_login_screen()
self.create_register_screen()
def create_login_screen(self):
# 创建登录界面
self.login_frame = tk.Frame(self.root)
self.login_frame.pack()
# 添加用户名标签和输入框
tk.Label(self.login_frame, text="用户名").grid(row=0, column=0)
self.username = tk.Entry(self.login_frame)
self.username.grid(row=0, column=1)
# 添加密码标签和输入框
tk.Label(self.login_frame, text="密码").grid(row=1, column=0)
self.password = tk.Entry(self.login_frame, show="*")
self.password.grid(row=1, column=1)
# 添加登录按钮
tk.Button(self.login_frame, text="登录", command=self.login).grid(row=2, column=0)
def create_register_screen(self):
# 创建注册界面
self.register_frame = tk.Frame(self.root)
# 添加用户名标签和输入框
tk.Label(self.register_frame, text="用户名").grid(row=0, column=0)
self.new_username = tk.Entry(self.register_frame)
self.new_username.grid(row=0, column=1)
# 添加密码标签和输入框
tk.Label(self.register_frame, text="密码").grid(row=1, column=0)
self.new_password = tk.Entry(self.register_frame, show="*")
self.new_password.grid(row=1, column=1)
# 添加注册按钮
tk.Button(self.register_frame, text="注册", command=self.register).grid(row=2, column=0)
def login(self):
# 获取用户名和密码
username = self.username.get()
password = self.password.get()
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='bus')
cursor = conn.cursor()
# 查询用户信息
sql = "SELECT * FROM users WHERE username=%s AND password=%s"
cursor.execute(sql, (username, password))
result = cursor.fetchone()
if result:
# 登录成功,打开主界面
self.root.withdraw()
import MainPage
MainPage.MainPage(self.root, username)
else:
# 登录失败,提示错误信息
tk.messagebox.showerror("错误", "用户名或密码错误!")
def register(self):
# 获取新用户名和密码
new_username = self.new_username.get()
new_password = self.new_password.get()
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='bus')
cursor = conn.cursor()
# 查询用户名是否已存在
sql = "SELECT * FROM users WHERE username=%s"
cursor.execute(sql, (new_username,))
result = cursor.fetchone()
if result:
# 用户名已存在,提示错误信息
tk.messagebox.showerror("错误", "用户名已存在!")
else:
# 插入新用户信息
sql = "INSERT INTO users (username, password) VALUES (%s, %s)"
cursor.execute(sql, (new_username, new_password))
conn.commit()
# 注册成功,提示成功信息
tk.messagebox.showinfo("成功", "注册成功!")
# 清空输入框
self.new_username.delete(0, tk.END)
self.new_password.delete(0, tk.END)
if __name__ == "__main__":
root = tk.Tk()
app = BusApp(root)
root.mainloop()
```
在上面的代码中,我们使用了tkinter库创建了一个名为BusApp的类,该类包含了登录和注册界面的实现。在登录界面中,我们获取用户输入的用户名和密码,然后连接数据库并查询用户信息,如果查询结果非空,则打开主界面;否则,提示错误信息。在注册界面中,我们获取用户输入的新用户名和密码,然后连接数据库并查询用户名是否已存在,如果存在则提示错误信息,否则插入新用户信息并提示注册成功信息。
最后,我们需要在登录成功后打开名为MainPage.py的Python文件。你可以在BusApp类的login方法中添加以下代码:
```python
import os
# 打开MainPage.py文件
os.system("python MainPage.py")
```
这样,当用户输入正确的用户名和密码时,就会自动打开MainPage.py文件。
希望这个例子对你有所帮助!
阅读全文