这个项目是一个基于Pygame的简单GUI库示例,主要功能是创建和管理图形用户界面控件,如输入框(Entry)。项目结构清晰,易于扩展和维护。
project_root/
│
├── example/
│ └── Entry_test.py # 示例文件,展示如何使用pygame_gui库
│
├── src/
│ └── pygame_gui/
│ └── control/
│ ├── control.py # 控制对象基类和控制器类
│ └── entry.py # 输入框控件类
- ChangeChecker 类:用于检测对象属性的变化,并在变化时调用指定的回调函数。
- Controller 类:用于管理和更新控制对象,如输入框。它维护一个控制对象列表,并可以添加或移除控制对象。
- Entry 类:继承自
Control类,实现了一个基本的输入框控件。它支持文本输入、光标移动和文本选择功能。
Entry_test.py 文件展示了如何使用 pygame_gui 库来创建一个简单的应用程序,其中包含一个输入框控件。以下是示例代码的关键部分:
-
导入必要的模块:
import logging import coloredlogs import sys, os import pygame_gui import pygame
-
设置日志记录:
logging.basicConfig(level=logging.DEBUG, filename='example.log', filemode='w', encoding='utf-8', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') coloredlogs.install(level='DEBUG')
-
初始化Pygame和控制器:
pygame.init() screen = pygame.display.set_mode((800, 600)) c = pygame_gui.Controller(screen)
-
创建和添加输入框控件:
entry = pygame_gui.entry.Entry(c, pygame.font.Font(r"C:\Windows\Fonts\HarmonyOS_Sans_SC_Bold.ttf", 20)) entry.size = pygame.Vector2(200, 30) entry.text = "Hello, world!" c.add_control(entry)
-
事件循环:
while True: events = pygame.event.get() for event in events: if event.type == pygame.QUIT: pygame.quit() sys.exit() screen.fill((0, 0, 255)) c.update(events) pygame.display.update()
-
确保已安装所需的第三方库,如
pygame和coloredlogs。可以通过pip安装:pip install pygame coloredlogs
-
将
src目录添加到Python的模块搜索路径中,以便导入pygame_gui模块。 -
运行
Entry_test.py文件,启动示例程序:python example/Entry_test.py
-
本项目依赖于特定的字体文件路径(例如:
r"C:\Windows\Fonts\HarmonyOS_Sans_SC_Bold.ttf"),请确保该路径下的字体文件存在,或者根据需要修改路径。 -
项目中的日志记录可以帮助调试和了解程序运行过程中的详细信息。
This project is licensed under the MIT License - see the LICENSE.md file for details.
MIT License
Copyright (c) 2025 xiaoxixi222