1. 聊天消息显示区域
  2. 消息输入框
  3. 发送按钮
  4. 在线用户列表
  5. 消息时间戳
  6. 用户头像显示

完整源码 (main.py):

import tkinter as tk
from tkinter import scrolledtext, messagebox
from datetime import datetime
import random
class QQChatApp:
    def __init__(self, root):
        self.root = root
        self.root.title("简易QQ")
        self.root.geometry("800x600")
        # 模拟用户数据
        self.current_user = "用户" + str(random.randint(1000, 9999))
        self.users = [self.current_user, "小明", "小红", "张三"]
        self.user_colors = {
            self.current_user: "#4285F4",  # 蓝色(自己)
            "小明": "#34A853",            # 绿色
            "小红": "#EA4335",            # 红色
            "张三": "#FBBC05"             # 黄色
        }
        self.create_widgets()
        self.add_system_message(f"欢迎 {self.current_user} 进入聊天室")
    def create_widgets(self):
        # 主容器
        main_frame = tk.Frame(self.root)
        main_frame.pack(fill=tk.BOTH, expand=True)
        # 左侧:聊天区域
        chat_frame = tk.Frame(main_frame, bg="#F0F0F0")
        chat_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        # 消息显示区
        self.message_area = scrolledtext.ScrolledText(
            chat_frame, 
            wrap=tk.WORD, 
            bg="white",
            state='disabled'
        )
        self.message_area.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
        # 输入区域
        input_frame = tk.Frame(chat_frame, bg="#F0F0F0")
        input_frame.pack(fill=tk.X, padx=10, pady=(0, 10))
        self.input_entry = tk.Entry(input_frame, font=("Arial", 12))
        self.input_entry.pack(side=tk.LEFT, fill=tk.X, expand=True)
        self.input_entry.bind("<Return>", self.send_message)
        send_button = tk.Button(
            input_frame, 
            text="发送", 
            command=self.send_message,
            bg="#4285F4",
            fg="white",
            font=("Arial", 10, "bold")
        )
        send_button.pack(side=tk.RIGHT, padx=(10, 0))
        # 右侧:用户列表
        user_frame = tk.Frame(main_frame, width=200, bg="#E0E0E0")
        user_frame.pack(side=tk.RIGHT, fill=tk.Y)
        user_frame.pack_propagate(False)
        # 用户列表标题
        tk.Label(
            user_frame, 
            text="在线用户", 
            font=("Arial", 12, "bold"),
            bg="#E0E0E0"
        ).pack(pady=10)
        # 用户列表
        self.user_listbox = tk.Listbox(
            user_frame,
            font=("Arial", 11),
            selectmode=tk.SINGLE,
            bg="white"
        )
        self.user_listbox.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
        # 添加用户到列表
        for user in self.users:
            self.user_listbox.insert(tk.END, user)
    def send_message(self, event=None):
        message = self.input_entry.get().strip()
        if not message:
            return
        # 添加消息到显示区
        self.add_message(self.current_user, message)
        # 清空输入框
        self.input_entry.delete(0, tk.END)
    def add_message(self, sender, message):
        self.message_area.config(state='normal')
        # 获取时间戳
        time_str = datetime.now().strftime("%H:%M:%S")
        # 设置消息格式
        color = self.user_colors.get(sender, "#000000")
        formatted_msg = f"\n[{time_str}] <font color='{color}'>{sender}:</font> {message}"
        # 插入HTML样式的消息(Tkinter支持部分HTML)
        self.message_area.insert(tk.END, formatted_msg, "message")
        # 配置消息样式
        self.message_area.tag_config("message", font=("Arial", 11))
        # 自动滚动到底部
        self.message_area.see(tk.END)
        self.message_area.config(state='disabled')
    def add_system_message(self, message):
        self.message_area.config(state='normal')
        time_str = datetime.now().strftime("%H:%M:%S")
        self.message_area.insert(tk.END, f"\n[{time_str}] <font color='gray'>系统: {message}</font>")
        self.message_area.tag_config("message", font=("Arial", 11, "italic"))
        self.message_area.see(tk.END)
        self.message_area.config(state='disabled')
if __name__ == "__main__":
    root = tk.Tk()
    app = QQChatApp(root)
    root.mainloop()

功能说明:

  1. 聊天界面

    简单的仿qq源码下载哪里能找到适合新手的可靠教程资源?

    • 白色背景的消息显示区域
    • 支持滚动查看历史消息
    • 不同用户消息使用不同颜色区分
  2. 用户交互

    • 输入框支持回车发送
    • 发送按钮触发消息发送
    • 在线用户列表显示在右侧
  3. 消息格式

    简单的仿qq源码下载哪里能找到适合新手的可靠教程资源?

    • 显示发送时间(HH:MM:SS)
    • 系统消息使用灰色斜体显示
    • 用户消息使用彩色字体

运行方法:

  1. 确保安装Python 3.x
  2. 无需安装额外库(Tkinter是Python内置库)
  3. 直接运行:
    python main.py

扩展建议:

  1. 网络通信

    • 添加Socket服务器/客户端
    • 使用WebSocket实现实时通信
    • 参考:Python的socketwebsockets
  2. 界面美化

    简单的仿qq源码下载哪里能找到适合新手的可靠教程资源?

    • 使用ttk主题
    • 添加头像图片
    • 实现消息气泡效果
  3. 功能增强

    • 文件传输
    • 表情包支持
    • 群聊功能
    • 消息加密

注意:此代码仅实现本地界面功能,实际QQ应用需要复杂的网络协议和服务器支持,建议学习网络编程后自行扩展网络功能。

如果需要更完整的实现(含网络通信),可以参考开源项目如:

相关内容

回顶部