A window and UI library based on tkinter.
Project description
InGame 🎮
InGame is a lightweight Python library designed to simplify making amazing UIs within a basic GUI window using tkinter. It enables developers to easily register and trigger events based on key presses with clean, decorator-based syntax.
✨ Features
- ✅ Decorator-based event binding
- ✅ Enum-based key recognition (A–Z, arrows, Enter, Escape, etc.)
- ✅ Clean and extensible architecture
- ✅ Simple GUI rendering using
tkinter
🚀 Getting Started
🔧 Installation
Use pip install ingame to install the project.
🧠 Usage Example
from ingame.core import InGame, Screen, EventType
from ingame.objects import Text, Button, Input
app = InGame()
@app.event(type=EventType.Key.A)
def handle_a():
print("Key A pressed!")
@app.event(type=EventType.Key.ESCAPE)
def handle_escape():
print("Escape pressed!")
screen.quit()
screen = Screen(app, title="My InGame App", width=600, height=400)
screen.set_resize(True, True)
hello_text = Text(screen, text="Hello!")
Button(screen, text="Click me", command=hello_text.destroy)
ht_input = Input(screen, packargs={"pady": 10})
def ht_click() -> None:
print(ht_input.get())
Button(screen, text="Print input value", command=ht_click, packargs={"pady": 10})
screen.show()
🎮 Supported Keys
Supported via EventType.Key, including:
- A–Z
- Arrow keys:
UP,DOWN,LEFT,RIGHT ENTER,ESCAPE,BACKSPACE
📦 Components
InGame
Handles registering and triggering events:
@event(type: EventType.Key): Registers a function for a specific key event.trigger_event(type): Manually triggers an event.
Screen
Simple tkinter window with key event binding:
set_resize(width: bool, height: bool): Sets if the window's width and height can be resized.show(): Opens the window and starts listening for key presses.after(ms: int, func: FunctionType): Runs a function after a specified amount if milliseconds.quit(): Closes the window.
⚠️ Exceptions
InGameException: Raised for invalid usage such as missing event type or unregistered keys.
🛠️ Development Notes
Written in Python 3.10+
Uses tkinter, Enum, and inspect.
📄 License
❤️ Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you’d like to change.
👤 Author
Made with ❤️ by Natuworkguy
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ingame-0.4.1.tar.gz.
File metadata
- Download URL: ingame-0.4.1.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de4496fcd2659759c3d6b6f06aeeb8db7fc901103beb8764d8d86b87e6ebf3fa
|
|
| MD5 |
69f54ed113584c4c11735a8ba2a519eb
|
|
| BLAKE2b-256 |
c7dd1395982a827c9e3de9a46ba2cbc82d8bca6872f60ce1fa1394b9c9cc9ba2
|
File details
Details for the file ingame-0.4.1-py3-none-any.whl.
File metadata
- Download URL: ingame-0.4.1-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51f3fe4ecc86469d772f00eac38b1620fc2adc065b2e4ec51be36638336ee7e8
|
|
| MD5 |
dc155a2afb50760a2df34e2e7b1a01a4
|
|
| BLAKE2b-256 |
86a465e3aed718b9fc4da98697b3df27865eeed5b8d65a784c15628ba86448d1
|