I built wordle for desktop but using my own GUI library!

Published: (January 2, 2026 at 07:56 AM EST)
2 min read
Source: Dev.to

Source: Dev.to

Cover image for I built wordle for desktop but using my own GUI library!

Developing desktop GUIs in Python often involves frameworks that are either low‑level or restrictive. To address this, I created PyUIKit, an open‑source, component‑based Python GUI library built on top of CustomTkinter. Its goal is to provide a web‑like, simple syntax for building GUIs efficiently. I’m actively updating PyUIKit; while it isn’t polished yet, it’s usable.

To test the library, I built a desktop Wordle clone, which helped identify current limitations and areas for improvement.

Overview

The desktop Wordle app includes:

  • Six attempts to guess a five‑letter word
  • Random word selection from a list of 450+ words
  • Color‑coded tiles for feedback: green ✅, yellow ⚠️, gray ❌
  • Toast notifications for user feedback

ScreenShot of wordle

PyUIKit GUIs

With PyUIKit, UI components are composed in a nested, web‑like structure:

from pyuikit import Body, Div, Input
from pyuikit.components import Text, Button

app = Body(resizable=(False, False), height=600, width=800, title='Wordle')

Div(
    height=600,
    width=800,
    bg_color='#121213',
    children=[
        Text(text="WORDLE", font_size=30, color="white"),
        Div(horizontal=True, nested=True, children=[
            Input(id='row1_col1', width=50, height=50, multiline=True),
            Button(text="Submit", on_click=lambda: handlesubmit(1))
        ])
    ]
)

app.run()

Handling Wordle Logic

def handlesubmit(rownum):
    letters = [Input.get_input_text(f'row{rownum}_col{i+1}') for i in range(5)]
    # Two‑pass check: green first, then yellow/gray
    # Toast feedback if correct or attempt used

Limitations discovered

  • Single‑line Input components cannot have custom heights
  • Font customization is limited
  • Dynamic background‑color updates are not fully supported

Future Improvements for PyUIKit

  • Easier, more concise update functions
  • Better Div layouts for flexible UI composition
  • Improved input handling, styling, and responsiveness

Conclusion

This Wordle project served as a practical stress test to identify PyUIKit’s current limitations and guide its evolution. While PyUIKit may not yet compete with more mature GUI frameworks, it is under active development, and projects like this play a crucial role in uncovering weaknesses, refining APIs, and shaping future improvements.

If you like the project, please consider giving it a star on the GitHub repo.

PyUIKit links

  • PyPI:
  • Docs & Quickstart:
  • GitHub Repo:
Back to Blog

Related posts

Read more »

Blog: PyPI in 2025: A Year in Review

markdown PyPI 2025 Year‑in‑Review Tags - new featureshttps://blog.pypi.org/tags/tag:new-features - organizationshttps://blog.pypi.org/tags/tag:organizations - s...