Python实现:打造交互式Tkinter聊天客户端
") self.label.pack() self.connection_button = tk.Button(self.root, text="连接到服务器", command=self.connect_to_server) self.connection_button.pack() def connect_to_server(self): ip_address = simpledialog.askstring("连接到服务器", "请输入服务器的IP地址:") port = simpledialog.askinteger("连接到服务器", "请输入服务器端口号:") self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: self.sock.connect((ip_address, port)) self.chat_menu() except Exception as e: messagebox.showerror("错误", f"无法连接到服务器:\n{str(e)}") self.sock = None def chat_menu(self): for widget in self.root.winfo_children(): widget.destroy() self.chatwindow = scrolledtext.ScrolledText(self.root, width=60, height=30) self.chatwindow.pack() self.message_entry = tk.Entry(self.root, width=50) self.message_entry.pack() self.send_button = tk.Button(self.root, text="发送消息", command=self.send_message) self.send_button.pack() listen_thread = threading.Thread(target=self.receive_messages) listen_thread.daemon = True listen_thread.start() def send_message(self): message = self.message_entry.get() self.message_entry.delete(0, tk.END) if message.strip() != "": self.sock.send(message.encode()) else: messagebox.showerror("错误", "消息不能为空!") def receive_messages(self): while True: try: message = self.sock.recv(1024) if not message: break self.chatwindow.insert(tk.END, message.decode() + "\n") self.chatwindow.see(tk.END) except Exception as e: messagebox.showerror("错误", f"断开连接:\n{str(e)}") self.sock = None break def main(): try: root = tk.Tk() chat_client = chatclient(root) root.mainloop() except Exception as e: print("发生错误:", e) if __name__ == "__main__": main() ######[AI写代码神器 | 1469点数解答 | 2024-10-30 13:14:13]
- Python 实现:超详细在线聊天程序客户端代码解析(阿里通义 | 1065点数解答 | 2024-11-11 21:22:36)236
- Python 超全在线聊天程序服务器端代码及改进方案揭秘(阿里通义 | 1152点数解答 | 2024-11-11 21:24:15)205
- Python Tkinter 代码剖析:GUI 程序搭建与窗口居中函数解析(字节豆包 | 314点数解答 | 2024-08-02 14:49:22)331
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)458
- Python实现:打造交互式Tkinter聊天客户端(GPT | 1469点数解答 | 2024-10-30 13:14:13)309
- Python打造VIP追剧神器:开发要点与安全处理揭秘(DeepSeek | 282点数解答 | 2025-09-09 19:49:20)139
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)414
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)405
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- Java调用Python接口中文乱码?设置UTF - 8编码一招解决!(讯飞星火 | 263点数解答 | 2024-06-06 17:07:59)389
- 解决Java调用Python接口中文乱码问题:设置UTF - 8编码全攻略(讯飞星火 | 160点数解答 | 2024-06-06 17:18:39)414