Python MySQL 聊天程序 tkinter
简介
本文将介绍如何使用Python连接MySQL数据库,并结合tkinter库创建一个简单的聊天程序。在这个程序中,用户可以输入消息并发送给其他用户,其他用户可以看到这些消息并作出回复。
准备工作
在开始编写代码之前,需要以下准备工作:
1. 安装Python和MySQL
2. 安装MySQL的Python库:pip install mysql-connector-python
3. 安装tkinter库:pip install tk
创建数据库
首先我们需要创建一个MySQL数据库,用于存储用户信息和聊天消息。可以使用以下SQL语句创建一个简单的数据库:
CREATE DATABASE chat;
USE chat;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE
);
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
from_user INT,
to_user INT,
message TEXT,
send_time DATETIME
);
Python代码实现
接下来我们开始编写Python代码,首先是连接MySQL数据库:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="yourpassword",
database="chat"
)
mycursor = mydb.cursor()
在这段代码中,需要将yourpassword
替换为你的MySQL密码。接下来我们编写tkinter界面和聊天功能:
import tkinter as tk
from tkinter import messagebox
from datetime import datetime
def send_message():
message = entry_message.get()
if not message:
messagebox.showerror("Error", "Message cannot be empty!")
return
to_user = listbox_users.get(listbox_users.curselection())[0]
sql = "INSERT INTO messages (from_user, to_user, message, send_time) VALUES (%s, %s, %s, %s)"
val = (current_user, to_user, message, datetime.now())
mycursor.execute(sql, val)
mydb.commit()
entry_message.delete(0, tk.END)
messagebox.showinfo("Success", "Message sent successfully!")
def receive_messages():
listbox_messages.delete(0, tk.END)
sql = "SELECT message FROM messages WHERE to_user = %s"
val = (current_user,)
mycursor.execute(sql, val)
messages = mycursor.fetchall()
for message in messages:
listbox_messages.insert(tk.END, message[0])
root = tk.Tk()
root.title("Chat Program")
label_users = tk.Label(root, text="Users:")
label_users.grid(row=0, column=0)
listbox_users = tk.Listbox(root)
listbox_users.grid(row=1, column=0)
label_messages = tk.Label(root, text="Messages:")
label_messages.grid(row=0, column=1)
listbox_messages = tk.Listbox(root)
listbox_messages.grid(row=1, column=1)
entry_message = tk.Entry(root)
entry_message.grid(row=2, column=1)
button_send = tk.Button(root, text="Send Message", command=send_message)
button_send.grid(row=2, column=2)
button_refresh = tk.Button(root, text="Refresh Messages", command=receive_messages)
button_refresh.grid(row=2, column=1)
root.mainloop()
在这段代码中,我们创建了一个tkinter窗口,显示用户列表、消息列表以及一个文本框用于输入消息。用户可以选择发送消息给其他用户,并且可以刷新消息列表查看接收到的消息。
运行结果
运行以上代码后,将会弹出一个tkinter窗口,用户可以在窗口中进行聊天交流。用户可以通过输入消息并点击发送按钮发送消息,其他用户可以刷新消息列表查看接收到的消息。
总结
通过本文的介绍,我们了解了如何使用Python连接MySQL数据库,并利用tkinter库创建一个简单的聊天程序。这个程序可以作为一个基础版本,可以根据需求进行功能扩展和界面美化,实现更加完善的聊天功能。