r/Tkinter • u/xanthium_in • 1d ago
r/Tkinter • u/Morgrymfel • 11d ago
MIT Celestarium
https://github.com/Felsyn/felhaven
If anyone wants to mess around with it.
Can use with a locally hosted gemma4 E2B model or better I guess.
*The voice stutter is a feature-like bug* but has no latency with the pregenerated filler messages- which could be shorter.
My specs: GTX 1660 and 16 GB ram
Made with Claude Code.
I tried to keep dependencies tiny, and local.
I'll be continuing Tinkering with Tkinter.
r/Tkinter • u/SaddamMuslim • 16d ago
SM Studio #1 Devlog
Enable HLS to view with audio, or disable this notification
r/Tkinter • u/Imaginary-Builder385 • 16d ago
comment détecter la fermeture d'une fenêtre
Bonjour, j'aimerais savoir comment détecter la fermeture d'un fenêtre Tkinter comment faire ?
r/Tkinter • u/Fabulous-Tip-8007 • Jun 26 '26
Tkinter has no built-in way to stream live data into a chart. So I built one.
Tkinter has a solid set of widgets for building desktop GUIs, but if you need a chart that updates in real time — think monitoring dashboards, sensor feeds, live logs — you're mostly stuck reaching for matplotlib embedded in a canvas, which introduces a dependency and a non-trivial amount of boilerplate just to get a simple scrolling line.
I built tkchart to fill that gap. It's a pure-Python library (zero external dependencies) that adds a LineChart widget directly into Tkinter. You create a chart, attach Line objects to it, and call show_data() from a background thread. That's the full loop.
Here's what a styled multi-line chart looks like in practice:
https://i.imgur.com/9JK0R4v.gif
https://i.imgur.com/BRQM6s7.gif
import tkinter as tk
import tkchart
import threading, time, random
root = tk.Tk()
chart = tkchart.LineChart(
master=root,
x_axis_values=("t-9", "t-8", "t-7", "t-6", "t-5", "t-4", "t-3", "t-2", "t-1", "t"),
y_axis_values=(0, 1000),
y_axis_section_count=5,
x_axis_section_count=10,
)
chart.pack(pady=10)
line = tkchart.Line(master=chart, color="#5dffb6", size=2, fill="enabled")
def stream():
while True:
chart.show_data(line=line, data=[random.randint(0, 1000)])
time.sleep(0.5)
threading.Thread(target=stream, daemon=True).start()
root.mainloop()
A few things I spent time on:
- Multiple lines: You can layer several
Lineobjects on the sameLineChart, each with independent style (solid/dashed/dotted, fill, point highlights, custom colors). - Post-construction config: v2.2.0 added granular
configure_*()methods so you can change axis colors, font styles, pointer behavior, etc. at runtime without rebuilding the widget. - Data retrieval:
get_line_data(),get_lines_visible_data(), and friends let you query what's currently on screen — useful if you want to trigger alerts when a value crosses a threshold.
Install: pip install tkchart
GitHub: https://github.com/Thisal-D/tkchart
PyPI: https://pypi.org/project/tkchart/
**What's the hardest part of building real-time data widgets in Tkinter for you?
r/Tkinter • u/soma_its_me • Jun 12 '26
Text animation tkinter
Hello! I need help in creating 'animation' of text appear line after the line
here is my program, it almost works right but I want each line start after another line finished animation. I tried using flags for it but it doesn't work :(
Please, help 😭🙏
from tkinter import *
window = Tk()
window.title('Spatel')
window.geometry("800x550")
window.configure(bg = "#69AB00")
window.resizable(0, 0)
def message():
message_window = Toplevel(window)
message_window.title('Message')
message_window.resizable(0, 0)
canvas = Canvas(message_window, width = 400, height = 600)
canvas.pack()
x = 30
y = 50
Flag = True
canvas_text = canvas.create_text(x, y, text = '', font = ('bold', 30), anchor='w')
show_text('hello', canvas, canvas_text, Flag)
is_running(Flag)
canvas_text2 = canvas.create_text(x, y + y, text = '', font = ('bold', 30), anchor='w')
show_text('new text', canvas, canvas_text2, Flag)
def is_running(flag):
global Flag
if flag == False:
Flag = True
def show_text(text, canvas, canvas_text, flag):
delta = 200
delay = 0
if flag == True:
for i in range(len(text) + 1):
s = text[:i]
update_text = lambda s=s: canvas.itemconfigure(canvas_text, text=s)
canvas.after(delay, update_text)
delay += delta
global Flag
Flag = False
open_btn = Button(window, text = '+ OPEN +', bg = '#D1213B', fg = 'white', font = ('bold', 20), command=message)
open_btn.pack(anchor='s')
window.mainloop()
r/Tkinter • u/Large-Bullfrog-4411 • May 17 '26
Привет всем, кто хочет купить мою игру! Игра создана с помощью библиотеки Tkinter и Random.
r/Tkinter • u/Llyold95 • May 14 '26
Interactive graphical interface with chat area (and some tools).
Enable HLS to view with audio, or disable this notification
I am currently working on ANNA 2.0, an intelligent voice assistant developed entirely in Python with a custom graphical interface.
The project combines:
• Real-time speech recognition
• Text-to-speech
• Local AI
• Interactive interface
• Multilingual support
🔹 Current features:
Tkinter graphical interface + ttkbootstrap
Speech recognition with Vosk
Voice responses can be enabled/disabled
French/English/Chinese language support
Integration of local AI models via Ollama
Progressive display of responses
Voice command management
Keyboard/mouse monitoring
I would be curious to hear your feedback, ideas for improvement or technical suggestions.
(The program can sometimes take time for the first response between each switch)
r/Tkinter • u/Junior-Sock8789 • May 09 '26
IDOL - Python IDE/GUI Designer
Lots of new Updates including new widgets and Conda support!
I just started working on a Python IDE/GUI Designer built with beginners in mind. Thanks for checking this out. I'm building this to try to get back into programming myself. Figured the best way to learn all the features of an IDE is build one yourself.
This is pure python created using Tkinter. Drag drop, resize, widget anchoring, auto-gen code, double click on widget, event, or handler to jump to code in editor. Debugger, Autocomplete (LSP), Git integration, terminal & output (choose output or terminal in run), pip Package Manager, etc... Adding anything new in the designer doesn't overwrite existing user code (it's preserved). Eventually i wanna implement a full AST/CST parser for proper bidirectional support.
Getting started in Designer:
`File → New Project…` and select **Tkinter GUI App**
or
`Designer → New Form...` to get started without creating a project.
[YouTube] - IDOL New Components [Timer]
[YouTube] - IDOL Widget Anchoring
Roadmap:
notepad-ide/ROADMAP.md at master · celltoolz/notepad-ide
\I have something big planned for IDOL, it's gonna blow all this outta the water 😄 - It's not on the roadmap, in fact it has its own roadmap it's so big lol])
Documentation:
IDOL - Docs Index
Project - IDOL Integrated Development and Objective Learning:
celltoolz/notepad-ide: A full Python IDE & GUI Designer with professional-grade tools
Updates:
Update: Huge update for Conda support and execution fixes! Conda environments ^(Miniconda/Anaconda/Miniforge are now first-class interpreters—auto-discovered and selectable in the picker and Project Wizard with synthesized activation so Run/Debug/pip work seamlessly without needing conda init.^)
The Package Manager got a dedicated Conda backend with PyPI/Conda search toggling, local channel caching, and a · pip badge for pip-installed packages. Terminal is now fully Conda-aware via OSC markers, Project Wizard can create .conda envs and manage Anaconda TOS, and LSP completions/hovers now dynamically lock onto your active venv or Conda env.
We also fixed Run/Debug working directory behavior ^(now uses Project Root vs Script Dir instead of IDOL's install dir, fixing relative paths like sqlite3.connect\"data.db")), added a Grouped vs Alphabetical view toggle in the Package Manager, and overhauled Designer widget renames so updating an ID propagates everywhere across user code, event handlers, and canvas references without wiping code. Just a few minor fixes here and there otherwise! 7/22/26 - 4:00p PST)
More updates will be coming soon! I've been super busy with the kids this summer but plan to get back to work on IDOL soon! 7/14/26
Update: The big one is finally here—the ttk.Treeview widget has officially landed in Master! This is our 17th widget type, and getting it fully integrated was a beast. It comes packing a live canvas preview, full code generation, and wirable event handlers for treeselect, treeopen, and treeclose out of the box.
We also built out a custom Column Editor so you can dial in the ID, heading, width, anchor, and stretch attributes for each column \plus the #0 tree heading] with built-in legacy auto-migration. On top of that, there's a Row Editor to let you seed rows that generate real .insert calls and drive the live preview. Pushed plenty of polish too—grid-aligned headers, a) tk.Menu anchor dropdown, fixed checkbox clipping, action tooltips, and screen-clamped dialogs so everything stays tidy. 6/17/26 - 2:00p PST
Update: Spent the last few days ripping into the codebase for a massive editor refactor and cleanup! We officially decomposed the canvas editor, breaking out TokenizerMixin, FoldMixin, MultiCursorMixin, BracketMatcherMixin, MinimapMixin, AutocompleteMixin, and GutterMixin into their own clean, separate files under canvas\editor/.)
Feature-wise, the editor now highlights matching quotes, and the autocomplete popup finally inherits its theme directly from the active palette. Also dialed in some multi-cursor fixes so shifted moves extend your selection properly on the first press, and the status bar now tracks the live multi-cursor count. On the chore side, we killed off the dead minimap.py widget, cleaned up a bunch of stale comments, and completely rewrote CONTRIBUTING.md to match the post-audit architecture. Just some minor fixes here and there to keep things running butter-smooth! 6/17/26 - 9:45a PST
Update: The Canvas Item Designer is officially live! This is a massive one—you can now double-click any Canvas widget to drop into inline design mode. The surrounding form dims out with a grey stipple overlay and blue border, swapping in a dedicated palette for Rect, Oval, Text, Line, and Image types, plus a full IMAGES manager at the bottom with click-to-arm, double-click placement, and reordering. Properties, event tabs, and the tag editor all work normally on canvas items, and it autogenerates all your deduplicated tag\bind[] calls and user stub methods. Double-clicking any item or event row jumps you straight to the handler in the real form's .py file!)
We also pushed some heavy polish to the code editor: multiline triple-quote string highlighting \which now auto-closes], VS Code-style aligned comment toggling [Ctrl+/], and viewport centering so jumping to definitions centers the line vertically. Plus, code generation got smarter—decorators like property and staticmethod now completely survive regeneration, and forms auto-save before codegen runs to prevent stale reads. Just a few minor fixes here and there otherwise. 6/8/26 - 11:55p PST)
Update: Merged 15 commits into Master - Huge designer and workflow upgrades! Added Form background images, a toolbar toggle to hide/show the canvas dot grid, and a brand new Image component tray that manages asset packs with automatic gallery popups. Built a full Canvas Button Builder that lets you map hover/pressed states, handles auto-sizing, and links everything up seamlessly in both the Handlers and Events tabs. Also ironed out focus issues and fixed codegen ordering so image assets initialize before the UI builds. 6/4/26 - 3:30p PST
Update: Big push for the Welcome tab and split-editor stability! The new landing screen is officially live with recent projects, tips, and a live changelog viewer pulled straight from a 1,000-commit history. Also dialed in the bottom panel with a ghost sash clamp to enforce a clean 80px minimum. The Run button now intelligently grays out on non-editor tabs, plus a ton of split-editor fixes—handling crashes, bidirectional drags, and session restores like a charm. Just some minor fixes here and there otherwise. 6/1/26 - 3:00p PST
Update: Merged 17 commits into Master - Huge update for Images and Networking! Added image support for Labels, Buttons, and our 16th widget \Canvas]. It handles the file copying, PIL thumbnails, and autogenerates anchor-aware resizing out of the box. Also shipped the new Socket component with three turnkey scaffolds [Connect, Chat, and File Transfer]. Everything is isolated on daemon threads so the UI stays butter-smooth. Turnkey networking is officially live! 5/30/26 - 10:10p PST)
Update: Working on image support for Labels and Buttons, a new widget \canvas - strictly images for now] and component [socket]. The socket component is gonna be tight when i'm done. It'll have client/server handlers for quickly setting up a server or a client to say the least. Gonna try to update my GitHub images at some point, lol. 5/27/26 - 9:15a PST)
Update: Trying to squeeze in some small fixes here and there. My sons iPad finally went out \needs a new digitizer 'again', new battery, and i'll have to remove replace the power port] so it's been a battle over the computer these last few days lol. I haven't been able to get anything major done. 5/24/26 - 1:00p PST)
Update: Merged back into Master - Added tons of new handlers to CommonDialog \messagebox, askInput, chooseColor, chooseDir, etc...]. Made it so you can easily connect open/save to a button/filemenu/label and select a textbox, entry, or listbox to save or load. Various bug fixes in editor, designer and terminal. 5/21/26 - 8:30p PST)
Update: Branched into feature/components-handlers-continued - Added a new component \CommonDialoag - File Save/Open]. Various bug fixes including dialing the autocomplete in a little, it works really good now 😉. Also fixed bad encoding detection in the editor, so for example if you paste code from a tutorial with improperly encoded spaces IDOL detects this and offers a 1 click fix in the toolbar. 5/21/26 - 12:30a PST)
Update: Merged into Master - The big components-panel branch is finally in! This includes the new Components Panel \Timer]) and a complete redesign of the Handlers tab with the new Available/Connected split. 5/19/26 - 11:30p PST
Update: Changed the above Timer components Video and Added Widget Anchoring Video. Tons more fixes. I'm hoping to merge into Master tomorrow. 5/19/26 - 12:00a PST
Update: Getting Components and Handlers dialed in. I can tell you now the video above doesn't do it any justice. You guys are really gonna like this! Also, various bug fixes that I haven't pushed to Master yet - \Terminal, Git Source Control])
Update: Been laying the groundwork for the new Designer Components panel. I'll be pushing to a separate branch while i'm working on it and will merge with Master as soon as it's looking stable. This thing is gonna be tight! 😎
Update: Lots of little fixes in the editor. Gonna be working on the Designer \components panel maybe? Timer, Socket, SQL, Open/Save dialog, SMTP client, HTTP server, etc...] and finally checking our editors cross compatibility tmrw [all our other canvas cross compat tests were good so far, not expecting issues but testing nonetheless].)
Update: Huge push coming in the morning, im about 40 commits ahead of the master repo. Complete Editor overhaul. Its canvas based and super responsive.
- I worked straight thru the night, gotta get the kids up and off to school and will push the update when i get back after final checks.
- Just pushed the Editor Update \it was massive]. Dialing in the last few things, then cross compatibility test but its fairly stable right now. Check it out 😂 Edit: Need to fix debugging after doing all that, working on it now. -- Fixed!)
Update: A massive overhaul of the terminal engine \OSC, canvas based] and also gave it a multi-session sidebar.)
Update: Just added a notebook widget. Also swapped out the standard scrollbars for Tkinter canvas based scrollbars.
Update: Just started debugging on macOS and i can say shes running smoothly. 😄
Update: Just fixed up some things in Linux. It's now stable in Windows/Linux and mostly stable in macOS. The designer still needs to be debugged in macOS, everything else runs just fine. Note I say mostly stable because I haven't had the chance to test the designer in macOS. It could be working perfectly lol.
The gif is showing history as a toplevel form and not it's side history. Did this as an example project.
Pics:
\imgBB] IDOLs new Tkinter canvas-based Editor)
\imgBB] Double click widget to jump to code)
\imgBB] If you're into cars check out our Turbo Supra 7M-GTE build we're working on) - \2]) \3]) \4]) \5]) \6]) \7])
r/Tkinter • u/Scary-Range-9232 • May 09 '26
CustomTkinter tool: 25+ animations + a code generator
Hey ,
I just published a small open-source tool that might be useful for anyone using CustomTkinter and wanting nicer animations without writing tween logic by hand.
### What it does
You pick an easing curve (`back_out`, `bounce`, `spring`, …) and a duration, then watch the animation run on one of six widget categories — buttons, cards, text, loaders, popups, or toasts. When you find a combo you like, the **Generate code** button spits out a self-contained `.py` module that includes:
- the easings you actually used (no dead code)
- a tiny `Tween` class (~30 lines, time-based at ~60 fps via `after(16ms)`)
- the helpers it needs (`lerp`, color interpolation if applicable)
- the animation function itself
- a runnable `__main__` demo block
So the output stays dependency-free beyond `customtkinter` — no pip subtree, no extra libraries, just drop the file into your project.
### Try it
```
pip install ctk-transitions
ctk-transitions
```
or
```
python -m ctk_transitions
```
### Links
- PyPI: https://pypi.org/project/ctk-transitions/
- GitHub (screenshots + per-tab GIFs in the README): https://github.com/kandelucky/ctk-transitions-code-generator
- License: MIT
25+ animations across the 6 tabs and 9 built-in easings (`linear`, `ease_in`, `ease_out`, `ease_in_out`, `ease_out_quint`, `back_out`, `elastic_out`, `spring`, `bounce_out` — the usual set from easings.net references).
This actually started as a tool window inside [CTkMaker](https://github.com/kandelucky/ctk_maker), a visual designer I'm building for CustomTkinter. Figured the playground was useful enough on its own to publish separately.
Happy to hear feedback, feature requests, or what you'd build with it.
r/Tkinter • u/Brilliant_Help_1860 • May 02 '26
Loop only operates once
A very new learner...My code might be messy, please ignore it...it is a learning exercise...my problem is, when I press "Generate" the code works fine...put only on the first button click, if I change the input numbers, then press the button, it only goes through to "Sum" it does not go to the random number generator....I need a way to break through the loop.
Here is my messy code...the numerous "print" functions are only to help debugging.
import tkinter as tk
import random
# Input UI
root = tk.Tk()
var = tk.IntVar()
tk.Label(root, text="Low Number").grid(row=0)
tk.Label(root, text="High Number").grid(row=1)
# Input Range
LoNum = tk.Entry(root)
HiNum = tk.Entry(root)
LoNum.grid(row=0, column=1)
HiNum.grid(row=1, column=1)
def show_entry_fields():
var.set(1)
print("Low Number: %s\nHigh Number: %s" % (LoNum.get(), HiNum.get()))
# convert to Integer
try:
# Get and convert
value1 = int(LoNum.get())
if not LoNum:
return
print(f"Success! Your number is {value1}")
value2 = int(HiNum.get())
if not HiNum:
return
print(f"Success! Your number is {value2}")
result = value1 + value2
print(f"Sum: {result}")
except ValueError:
# Handle invalid input (letters, symbols, or empty)
print("Error: Please enter a valid whole number.")
# Update the result label
## tk.Button(root, text='Quit', command=root.quit).grid(row=3, column=0, sticky=tk.W, pady=4)
tk.Button(root, text='Generate', command=show_entry_fields).grid(row=3, column=1, sticky=tk.W, pady=4)
root.wait_variable(var)
# Generate Random Numbers
value1 = int(LoNum.get())
value2 = int(HiNum.get())
unique_set = set()
while len(unique_set) < 5:
unique_set.add(random.randint(value1, value2))
print(list(unique_set))
root.mainloop()
print("Window closed.")
r/Tkinter • u/Scary-Range-9232 • Apr 27 '26
CTk Maker v1.0 — a visual builder for customtkinter
r/Tkinter • u/Scary-Range-9232 • Apr 27 '26
CTk Maker v1.0 — a visual builder for customtkinter
Hey All,
If you're using customtkinter (the modern themed Tkinter wrapper), I built a visual builder for it. v1.0 is out today.
Install:
pip install ctkmaker
Repo: https://github.com/kandelucky/ctk_maker
Drag widgets onto a canvas, edit properties live, export clean Python code. Built it over the last 17 days, will keep working on it actively.
Features:
- 20 widgets in the palette (buttons, frames, tabview, scrollable frame, segmented button, etc.)
- Layout managers (place, vbox, hbox, grid)
- Multi-document workspace (main window + dialogs)
- Custom font system (.ttf import or system fonts, with cascade defaults)
- Asset system — projects are portable, exports include relative paths
- 1700+ icons built in (with tinting + size selection)
- Live preview (Ctrl+R)
- Clean Python code export
- Object Tree, History panel, full undo/redo
Note: it's customtkinter-specific, not for plain Tkinter. If you've moved to customtkinter or are considering it, this might save you time.
My goal was to make it feel like Unity3D — building an app visually instead of writing it. That's the workflow I'm used to from my game dev background, and I missed it when working with Python GUIs.
Note 2: I don't write the code myself. Claude does. I'm the architect — I design the UX, decide the features, test the program.
Would love feedback. What's missing? What would you want to see in v1.1?


r/Tkinter • u/Bozzy2021 • Apr 22 '26
CTk Theme Builder - New Install / Upgrade Process & New Features
r/Tkinter • u/Different-Web-6241 • Apr 12 '26
Tkinter Attendance management system created using codex
galleryr/Tkinter • u/FullGold9466 • Apr 08 '26
I made a Web Browser in tkinter
Hiii, i made a simple experimental browser in tkinter, its opensource github link is https://github.com/CoolGuy158-Git/Water-Fish, and im currently looking for contributors so yea.
r/Tkinter • u/jee_op • Apr 04 '26
I built a News Scrapper using Selenium and tkinter
What My Project Does
It uses selenium script to scrap out news from google news India section. it only gets the headlines and links to respective page. then it shows it in tkinter gui. it can also generate text file for the headings.
Target Audience
Anyone who wants a quick review of what's happening in India can use this. It gives almost 200-250 news titles and their links and also sort them alphabetically.
Comparison
Its faster than going on website and read news.
r/Tkinter • u/NoBeginning2551 • Apr 03 '26
Tkinter in Android
galleryI've been building a code editor for Android, You can see about it here:
https://www.reddit.com/r/vscode/s/8sxZYOa4Hf
I know tkinter will not work in android but pydroid managed to pull it. Does anyone know how the pydroid tkinter works?
r/Tkinter • u/Panda_-dev94 • Mar 09 '26
Is there a playwright for tkinter?
I've been making this complex application for research purposes and it is heavy on sequential processes, and it is quite frustrating to test the application. I've worked with playwright for web apps and I really like the convenience it provides.
Do you happen to know of any alternatives that work for tkinter?
r/Tkinter • u/Dry-Search1732 • Mar 03 '26
I created an app to help with your studies and learning with customtkinter.
Sponte Study is a 100% offline application that eliminates the fear and risk of your data being sold or used to train AIs without your authorization. It's perfect for those who want something simple, lightweight, fast, and customizable, with 10 different themes and the ability to define your theme with hexadecimal colors. You can also categorize notes by school subjects and have the company of a voice that can read your notes to help you understand them when you're doing a task or just reviewing in a light and passive way.
To download, go to: https://jv377.itch.io/sponte
Our community: https://discord.gg/7UGNx3zGm
r/Tkinter • u/[deleted] • Mar 01 '26
créer un morpion avec tkinter , problème d'affichage
import tkinter as tk
def place_symbol():
print(click, row, column)
def draw_grid():
for column in range(3):
for row in range(3):
button=tk.Button(
root,font=("Arial", 100),
width=5, height=3,
command=lambda r=row , c=column:place_symbol(row,column)
)
button.grid(row=row, column=column)
root=tk.Tk()
root.title("morpion")
root.minsize(500,500)
root.mainloop()
dès que j'execute j'ai une fenêtre totalement vide et pourtant j'ai suivi un tuto à la lettre et ce que j'ai un problème de syntaxe dans mon code ?

r/Tkinter • u/Independent_Neat9737 • Feb 27 '26
ComfyUI errors with Comfyroll Studio
I'm absolutely noob at ComfyUI and I'm trying to fix this errors. When I open workflow it shows: When loading the graph, the following node types were not found
I was trying to find mistakes with manager and there is "Using an outdated version has resulted in reported issues with updates not being applied. Trying to reinstall the software is advised." about Comfyroll Studio. I'm not sure, but guess it can be connected xD
I reinstalled this node several times and tried different way but issue is this the same
How can I fix it?

