Python MySQL 聊天程序 tkinter

Python MySQL 聊天程序 tkinter

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库创建一个简单的聊天程序。这个程序可以作为一个基础版本,可以根据需求进行功能扩展和界面美化,实现更加完善的聊天功能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程