我为桌面构建了 Wordle,但使用了自己的 GUI 库!

发布: (2026年1月2日 GMT+8 20:56)
3 min read
原文: Dev.to

Source: Dev.to

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

在 Python 中开发桌面 GUI 时,常常需要使用低层次或受限的框架。为了解决这个问题,我创建了 PyUIKit,一个基于 CustomTkinter 的开源、组件化 Python GUI 库。它的目标是提供 类似网页、简洁的语法,高效构建 GUI。我正在积极更新 PyUIKit;虽然它尚未打磨得很完美,但已经可以使用。

为了测试该库,我实现了一个 桌面版 Wordle 克隆,这帮助我发现了当前的局限性以及需要改进的地方。

概览

桌面版 Wordle 应用包括:

  • 六次机会猜测一个五字母单词
  • 从 450+ 单词的列表中随机选取单词
  • 使用颜色标记的格子反馈:绿色 ✅、黄色 ⚠️、灰色 ❌
  • Toast 通知用于用户反馈

ScreenShot of wordle

PyUIKit GUI 示例

使用 PyUIKit 时,UI 组件以 嵌套、类网页的结构 组合:

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()

处理 Wordle 逻辑

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

发现的局限性

  • 单行 Input 组件无法自定义高度
  • 字体定制受限
  • 动态背景颜色更新尚未完全支持

PyUIKit 的未来改进

  • 更简洁、易用的更新函数
  • 更好的 Div 布局,以实现灵活的 UI 组合
  • 改进输入处理、样式和响应性

结论

这个 Wordle 项目作为一次实用的压力测试,帮助我们识别了 PyUIKit 当前的局限,并指引了其演进方向。虽然 PyUIKit 仍未能与更成熟的 GUI 框架竞争,但它正处于积极开发中,此类项目在发现缺陷、完善 API、塑造未来改进方面发挥着关键作用。

如果你喜欢这个项目,请考虑在 GitHub 仓库给它点个星。

PyUIKit 链接

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

相关文章

阅读更多 »

博客:PyPI 2025:年度回顾

markdown PyPI 2025 年度回顾 标签 - 新功能 https://blog.pypi.org/tags/tag:new-features - 组织 https://blog.pypi.org/tags/tag:organizations - s...