鱼C论坛

 找回密码
 立即注册
查看: 28|回复: 1

[作品展示] 简易聊天系统【pygame + pygame_gui】beta0.1

[复制链接]
发表于 2026-5-3 13:49:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 MC.Steve 于 2026-5-3 14:46 编辑

beta0.1版本基本功能:
1.实现输出英文字体
2.实现聊天框、发送键、聊天界面
问题:
1字体变方框
源码:
  1. import pygame
  2. import pygame_gui

  3. # --- 1. 初始化设置 ---
  4. pygame.init()

  5. WINDOW_SIZE = (600, 500)
  6. screen = pygame.display.set_mode(WINDOW_SIZE)
  7. pygame.display.set_caption('简易聊天界面')

  8. # --- 2. 创建 UIManager ---
  9. # 【关键修改】只传入窗口大小,不传主题路径
  10. # 这样会使用 pygame_gui 的内置默认样式,避开字体扫描的 bug
  11. manager = pygame_gui.UIManager(WINDOW_SIZE)

  12. # --- 3. 创建 UI 元素 ---
  13. # 注意:因为没有自定义主题,背景色可能会是默认的灰色/黑色

  14. chat_history = pygame_gui.elements.UITextBox(
  15.     relative_rect=pygame.Rect((10, 10), (580, 430)),
  16.     html_text="欢迎来到聊天室!<br>",
  17.     manager=manager
  18. )

  19. message_input = pygame_gui.elements.UITextEntryLine(
  20.     relative_rect=pygame.Rect((10, 450), (480, 40)),
  21.     manager=manager
  22. )

  23. send_button = pygame_gui.elements.UIButton(
  24.     relative_rect=pygame.Rect((500, 450), (90, 40)),
  25.     text='发送',
  26.     manager=manager
  27. )

  28. # --- 4. 主循环 ---
  29. clock = pygame.time.Clock()
  30. is_running = True

  31. while is_running:
  32.     time_delta = clock.tick(60) / 1000.0

  33.     for event in pygame.event.get():
  34.         if event.type == pygame.QUIT:
  35.             is_running = False

  36.         manager.process_events(event)

  37.         if event.type == pygame_gui.UI_BUTTON_PRESSED:
  38.             if event.ui_element == send_button:
  39.                 message_text = message_input.get_text()
  40.                 if message_text.strip():
  41.                     # 手动实现文本追加
  42.                     current_text = chat_history.html_text
  43.                     new_text = current_text + message_text + "<br>"
  44.                     chat_history.set_text(new_text)

  45.                     message_input.set_text("")

  46.     manager.update(time_delta)
  47.     screen.fill((30, 30, 30))
  48.     manager.draw_ui(screen)
  49.     pygame.display.flip()

  50. pygame.quit()
复制代码


正在改进~~~~~~~

评分

参与人数 2荣誉 +10 鱼币 +10 收起 理由
第_个鱼油 + 5 + 5 鱼C有你更精彩^_^
player-none + 5 + 5 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-5-3 13:49:24 | 显示全部楼层
评分:8 / 10  

代码整体结构清晰,实现了聊天界面的基本框架,非常适合初学者入门 pygame_gui。  

      
  • 优点: 初始化简洁,UI组件布局合理,事件处理逻辑正确,发送按钮能正确获取输入并追加到历史框。  
  • 可改进点:  
      1. 消息追加时缺少换行符,所有消息会连成一行。建议在 message_text 后添加 "<br>" 实现换行。  
      2. 未支持键盘回车发送(需监听 pygame.KEYDOWN 事件)。  
      3. 聊天框长度固定,消息过多时无法滚动。可考虑用 UIScrollingContainer 或定期清理旧消息。  
      4. 缺少对中文字体的支持说明(当前仅英文)。  
  

作为 beta0.1 版本,核心功能完整,建议后续增加换行、回车发送、滚动条等交互优化。继续加油!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-5-25 02:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表