{"id":30146388,"url":"https://github.com/code-wizaard/gtkinter","last_synced_at":"2026-05-14T23:36:52.285Z","repository":{"id":307339171,"uuid":"1029225636","full_name":"Code-Wizaard/GTkinter","owner":"Code-Wizaard","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-30T18:32:32.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-30T19:59:54.920Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Code-Wizaard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-30T17:55:53.000Z","updated_at":"2025-07-30T18:32:35.000Z","dependencies_parsed_at":"2025-07-30T20:10:19.948Z","dependency_job_id":null,"html_url":"https://github.com/Code-Wizaard/GTkinter","commit_stats":null,"previous_names":["code-wizaard/gtkinter"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Code-Wizaard/GTkinter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-Wizaard%2FGTkinter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-Wizaard%2FGTkinter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-Wizaard%2FGTkinter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-Wizaard%2FGTkinter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Code-Wizaard","download_url":"https://codeload.github.com/Code-Wizaard/GTkinter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-Wizaard%2FGTkinter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269857983,"owners_count":24486453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-11T09:20:15.811Z","updated_at":"2026-05-14T23:36:52.228Z","avatar_url":"https://github.com/Code-Wizaard.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GTkinter 🧩  \r\n\u003e Simple. Clean. Pythonic GTK for humans.\r\n\r\n[![PyPI version](https://img.shields.io/pypi/v/GTkinter?label=PyPI\u0026color=blue)](https://pypi.org/project/GTkinter/)\r\n[![License](https://img.shields.io/github/license/Code-Wizaard/GTkinter)](LICENSE)\r\n[![Python](https://img.shields.io/badge/python-3.7+-blue)](https://www.python.org/downloads/)\r\n[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20GTK3-success)](https://www.gtk.org/)\r\n[![Stars](https://img.shields.io/github/stars/Code-Wizaard/GTkinter?style=social)](https://github.com/Code-Wizaard/GTkinter)\r\n\r\n---\r\n\r\n## 🐍 What is GTkinter?\r\n\r\n**GTkinter** is a Python library that wraps GTK in a beautiful, clean, and beginner-friendly interface — similar in spirit to Tkinter but powered by modern GTK.\r\n\r\nIt’s great for:\r\n- 🧑‍💻 Beginners who hate GTK’s verbosity\r\n- 🚀 Rapid prototyping\r\n- 🧼 Keeping your GUI code clean and tidy\r\n- 🧠 Learning GUI programming without headaches\r\n\r\n---\r\n\r\n## 🌟 Features\r\n\r\n✅ Very simple API  \r\n✅ Modern GTK3 under the hood  \r\n✅ Automatic layout system (VBox / HBox)  \r\n✅ Signal binding with Enums (type-safe!)  \r\n✅ Easily extendable with your own widgets  \r\n✅ PyPI installable (`pip install GTkinter`)  \r\n✅ No XML, no Glade, no nonsense\r\n\r\n---\r\n\r\n## 📦 Installation\r\n\r\nMake sure you have GTK3 and PyGObject installed on your **Linux system**:\r\n\r\n### On Arch-based distros:\r\n```bash\r\nsudo pacman -S gtk3 gobject-introspection\r\n```\r\n\r\n### On Debian/Ubuntu:\r\n```bash\r\nsudo apt install python3-gi gir1.2-gtk-3.0\r\n```\r\n\r\n### Then:\r\n```bash\r\npip install GTkinter\r\n```\r\n\r\n---\r\n\r\n## 🧪 Example\r\n\r\n```python\r\nfrom GTkinter import App, Window, Button, Label, VBox\r\nfrom GTkinter.enums import Events\r\n\r\napp = App()\r\nwin = Window(\"Hello GTkinter\", 300, 200)\r\n\r\nlayout = VBox()\r\nlabel = Label(\"Click the button\")\r\nbtn = Button(\"Click me\")\r\n\r\ndef on_click(button):\r\n    label.set_text(\"You clicked me!\")\r\n\r\nbtn.connect(Events.CLICKED, on_click)\r\n\r\nlayout.add(label)\r\nlayout.add(btn)\r\nwin.set_child(layout)\r\n\r\nwin.connect(Events.DESTROY, lambda w: exit(0))\r\n\r\napp.run(win)\r\n\r\n```\r\n\r\n\r\n---\r\n\r\n## 🧠 API Overview\r\n\r\n| Component | Description                      |\r\n|----------|----------------------------------|\r\n| `App`    | Your main GTK application        |\r\n| `Window` | A top-level window               |\r\n| `Button` | A clickable button               |\r\n| `Label`  | A text label                     |\r\n| `VBox`   | Vertical layout container        |\r\n| `HBox`   | Horizontal layout container      |\r\n| `Events`  | Enum for signal types (clicked, etc.) |\r\n\r\n---\r\n\r\n## 💡 Why GTkinter?\r\n\r\nGTK is great. But it’s also:\r\n- Verbose\r\n- Hard to teach\r\n- Ugly without Glade\r\n\r\nGTkinter changes that by:\r\n- Wrapping complex APIs in minimal classes\r\n- Making it feel like Tkinter (but better looking)\r\n- Emphasizing readability and flow\r\n\r\n---\r\n\r\n## 🧑‍💻 Contributing\r\n\r\nPull requests are welcome!  \r\nIf you have a suggestion or want to extend the widget set, open an issue or PR.\r\n\r\n---\r\n\r\n## 📜 License\r\n\r\nGPL-3 License — see [LICENSE](LICENSE) file.\r\n\r\n---\r\n\r\n## 📎 Related Projects\r\n\r\n- [PyGObject](https://pygobject.readthedocs.io/) – Python bindings for GObject and GTK\r\n- [GTK](https://www.gtk.org/) – The GTK GUI toolkit\r\n\r\n---\r\n\r\n## ❤️ Credits\r\n\r\nBuilt with love by **@Code-Wizaard**  \r\nContributions \u0026 stars are appreciated 🌟\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-wizaard%2Fgtkinter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode-wizaard%2Fgtkinter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-wizaard%2Fgtkinter/lists"}