python socket 网络聊天室使用图形界面 生成代码
时间: 2024-01-06 09:06:15 浏览: 123
抱歉,我没有生成代码的功能,但我可以为你提供一个可供参考的Python Socket网络聊天室的代码示例,其中使用了Tkinter模块来创建图形用户界面(GUI):
```python
import tkinter as tk
import socket
import threading
# 创建主窗口
root = tk.Tk()
root.title('网络聊天室')
root.geometry('400x300')
# 创建Socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立连接
HOST = 'localhost'
PORT = 12345
client_socket.connect((HOST, PORT))
# 定义发送消息的函数
def send_msg():
msg = input_msg.get()
client_socket.sendall(msg.encode())
input_msg.delete(0, tk.END)
# 定义接收消息的函数
def recv_msg():
while True:
recv_data = client_socket.recv(1024).decode()
if not recv_data:
break
chat_msg.configure(state='normal')
chat_msg.insert(tk.END, recv_data + '\n')
chat_msg.configure(state='disabled')
# 创建消息列表
chat_msg = tk.Text(root, state='disabled', width=50, height=15)
chat_msg.pack(side=tk.TOP, padx=10, pady=10)
# 创建消息输入框和发送按钮
input_msg = tk.Entry(root, width=40)
input_msg.pack(side=tk.LEFT, padx=10, pady=10)
send_btn = tk.Button(root, text='发送', command=send_msg)
send_btn.pack(side=tk.LEFT, padx=10, pady=10)
# 创建接收消息的线程
recv_thread = threading.Thread(target=recv_msg)
recv_thread.start()
# 运行主窗口
root.mainloop()
# 关闭连接
client_socket.close()
```
这个示例代码中使用了一个Text小部件来显示聊天记录,一个Entry小部件来接收用户输入的消息,以及一个Button小部件来发送消息。同时,还创建了一个接收消息的线程,不断从Socket连接中接收消息并更新聊天记录。
阅读全文