🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

crystalwindow

Package Overview
Dependencies
Maintainers
1
Versions
63
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

crystalwindow

A Tkinter powered window + GUI toolkit made by Crystal (ME)! Easier apps, smoother UI and all-in-one helpers!, Gui, Buttons, FileHelper, Sprites, Animations, Colors, Math, Gravity, Camera, 3D and more!

pipPyPI
Version
4.8
Maintainers
1

CRYSTALWINDOW!!!

A tiny but mighty Tkinter framework that gives u a full window system, GUI magic, physics, and file power — all packed into one clean lil module. made by crystal

No setup pain. No folder chaos. Just import it. Boom. Instant game window. 🎮

Quick Start

pip install crystalwindow

then make a new .py file:

from crystalwindow import Window  # imports everything from crystalwindow (in this case its Window)

win = Window(800, 600, "Crystal Demo")  # setup: Window(width, height, name, icon=MyIcon.ico)
win.run()  # runs the window loop
win.quit()   # closes it (for RAM n CPU)

Run it. and boom, instant working window. Yes, THAT easy.

Easy crystalwindow window + Gui + Text file:

from crystalwindow import *

win = Window(800, 600, "CrystalWindowLib Mega Sandbox")

gui = GUIManager()
toggle1 = Toggle((50, 50, 100, 40), value=False)
slider1 = Slider((50, 120, 200, 30), min_val=0, max_val=100, value=50)

btn1 = Button(rect=(50, 200, 150, 50), text="Click Me!", color=random_color(),
              hover_color=random_color(), callback=lambda: print("Button clicked!"))
lbl1 = Label((250, 50), "Hello GUI!", color=random_color(), size=24)

gui.add(toggle1)
gui.add(slider1)
gui.add(btn1)
gui.add(lbl1)

# --- Debug Overlay ---
debug = DebugOverlay()

# --- Camera Shake ---
shake = CameraShake(intensity=20)

# --- Main loop ---
def update(win):
    gui.update(win)
    gui.draw(win)

    # --- draw text examples ---
    win.draw_text_later("Normal Text", pos=(400, 50), size=18, color=random_color())
    win.draw_text_later("Bold Text", pos=(400, 80), size=20, color=random_color(), bold=True)
    win.draw_text_later("Italic Text", pos=(400, 110), size=20, color=random_color(), italic=True)
    win.draw_text_later("Bold + Italic", pos=(400, 140), size=22, color=random_color(), bold=True, italic=True)

    # --- draw toggle/slider values ---
    win.draw_text_later(f"Toggle: {toggle1.value}", pos=(50, 90), size=18)
    win.draw_text_later(f"Slider: {int(slider1.value)}", pos=(50, 160), size=18)

    # --- draw gradient ---
    gradient_rect(win, (50, 300, 200, 100), (255,0,0), (0,0,255))

    # --- screen shake example (move a rectangle with shake) ---
    shake.update()
    x_off, y_off = shake.offset
    win.draw_rect((0,255,0), (500+x_off, 300+y_off, 100, 50))

    # --- draw random name + color ---
    win.draw_text_later(f"Random Name: {random_name()}", pos=(50, 420), size=20, color=random_color())

    # --- debug overlay ---
    debug.draw(win, fps=int(win.clock.get_fps()))

win.run(update)
win.quit()

And now thats how you use it!

Current Variables.

Whats Inside

Built-in window manager

Built-in GUI (buttons, sliders, toggles, labels)

Built-in gravity + physics engine

Tilemap system (place & save blocks!)

Image loader (with default base64 logo)

Safe startup (works even inside PyInstaller)

Mathematics Handler

Works offline

Minimal syntax

Full debug overlay

Window System

from crystalwindow import *

win = Window(800, 600, "My Game", icon="MyIcon.png")

def loop(win):
    win.fill((10, 10, 30))
    # draw or update stuff here

win.run(loop)
win.quit()

Features

  • handles events
  • tracks keys + mouse
  • supports fullscreen
  • safe to close anytime

Player Example

player = Player(100, 100)

def loop(win):
    player.update(win.keys)
    player.draw(win.screen)
move(dx, dy) -> moves player
take_damage(x) -> takes damage
heal(x) -> heals
draw(surface) -> renders sprite

TileMap

tilemap = TileMap(32)
tilemap.add_tile(5, 5, "grass")
tilemap.save("level.json")
add_tile(x, y, type)
remove_tile(x, y)
draw(surface)
save(file) / load(file)

GUI System

btn = Button(20, 20, 120, 40, "Click Me!", lambda: print("yo"))
gui = GUIManager()
gui.add(btn)

Use built-in stuff like:

Button(x, y, w, h, text, onclick)
Label(x, y, text)
Toggle(x, y, w, h, text, default=False)
Slider(x, y, w, min, max, default)

Gravity

g = Gravity(0.5)
g.update(player)

makes objects fall realistically. ez.

FileHelper

save_json("data.json", {"coins": 99})
data = load_json("data.json")

Also supports:

save_pickle / load_pickle

FileDialog("save") (tkinter dialog popup)

DrawHelper

DrawHelper.text(win.screen, "Hello!", (10,10), (255,255,255), 24)
DrawHelper.rect(win.screen, (100,0,200), (50,50,100,60))

perfect for ui & quick visuals

Debug Tools

debug = DebugOverlay() debug.toggle() # show or hide FPS debug.draw(win.screen, {"hp": 100, "fps": win.clock.get_fps()})

Mathematics

math = Mathematics()

  • Current Variables math.add(num1, num2) math.subtract(num1, num2) math.multiply(num1, num2) math.divide(num1, num2)

Example Game

from crystalwindow import *

win = Window(800, 600, "My Cool Game")
player = Player(100, 100)
gravity = Gravity()

def update(win):
    win.fill((25, 25, 40))
    player.update(win.keys)
    gravity.update(player)
    player.draw(win.screen)

win.run(update)
win.quit()

There is a lil encoded PNG inside the file called:

DEFAULT_LOGO_BASE64

Its used when no icon is given. Set ur own like:

Window(800, 600, "My Window", icon="MyIcon.png")

or do whatever you want.. i guess.

Example Integration

from crystalwindow import Window

win = Window(800, 600, "My Window", icon="MyIcon.png")

while win.running:
    win.check_events()
    win.fill((10, 10, 20))
    win.run()
    win.quit()

Credits

Made by: CrystalBallyHereXD Framework: CrystalWindow Powered by: Tkinter and Python License: Free to use, modify, and vibe with it!

Keywords

tkinter gui window toolkit easy crystalwindow crystal cw player moveable easygui python py file math gravity hex color

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts