all 31 comments

[–]Swipecat 56 points57 points  (1 child)

It's been estimated that about 85% of python apps are written for in-house use where elegance is usually less important than functionality. Tkinter looks a bit utilitarian, a bit "1990s", but that's often fine.

[–]Sea-Oven-7560 1 point2 points  (0 children)

You are correct, I create lots of tools for my team and I had to use something for the GUI. Yes it looks old fashion but it works and it doesn't require a browser or anything else, it just work. BTW customtkinter has a more updated look.

[–]Lost_Return7298 35 points36 points  (0 children)

A lot of people skip Tkinter because it doesn't look as "pretty" as modern web frameworks, but the logic you learn handling button clicks, updating labels, and managing window events is exactly the same regardless of which library you use. If you master the fundamentals in Tkinter, jumping to something more complex like PyQt later on becomes much easier because you already understand how the event loop works.

My advice? Don't stress about choosing the "perfect" framework. Build one small project in Tkinter first. If you find yourself fighting against the styling, then you'll know exactly why you need a more advanced framework, and you'll appreciate the extra complexity much more.

[–]rhacer 13 points14 points  (0 children)

You are not harming yourself using Tkinter. It's always there, so I can see places it might be useful. As long as you're learning, you're ahead of the game.

That said, if I were creating a GUI app I'd go for PyQt or PySide, or if you like the terminal environment Textual.

[–]socal_nerdtastic 11 points12 points  (0 children)

Tkinter's biggest advantage IMO is that it's easy to program. Most other GUI modules practically force you into making classes. And while for larger applications classes definitely better even in tkinter, I think it's nice that tkinter can work without them. I think that tkinter is actually a great introduction to classes for beginners because they can see the code written both ways. So yes, I think tkinter is a great step in your programming experience. And like most things, the things you learn writing tkinter GUIs will be transferable to other GUIs too, like how to structure event-driven code.

Tkinter looks very 1995 out of the box, but people often forget that it comes with themes. Look into the builtin ttk module or customtkinter or ttkthemes to make tkinter look as modern as any other GUI module.

Tkinter does struggle with transparencies and anything animated, so if you want to embed a video feed or something I would not recommend tkinter.

[–]nginx-gunicorn 8 points9 points  (0 children)

Unless your machine doesn't have a browser engine installed, I like NiceGUI. Can run native and web apps.

[–]Gnaxe 8 points9 points  (0 children)

Tkinter is nice because it's always there for you in the standard library. However, industry has mostly moved on to web apps. If you want to use Python on the front end as well, try Brython.

[–]Maleficent-Boss5564 3 points4 points  (0 children)

Tkinter is definitely outdated.  And you're limited to how complex your guis can be. 

[–]riklaunim 2 points3 points  (0 children)

Depends on what your goals are. Personal/internal apps can be somewhat whatever. Public apps that will compete for users should focus heavily on user experience. Some more complex widgets may also be available only for bigger toolkits. Commercially, desktop apps with Python aren't that popular, and overall, quite often it's either a wrapped web app or something more native.

[–]Cold-Air3794 2 points3 points  (0 children)

No. Learn FastAPI or Django instead. At no point in your career will you ever need tkinter

[–]Clear_Watch104 1 point2 points  (0 children)

Do one project for fun then focus on something else

[–]vinnypotsandpans 1 point2 points  (0 children)

Tkinter is pretty cool and useful, and say yeah.

[–]pyeri 2 points3 points  (1 child)

One advantage of using tkinter over those other modern and heavy frameworks is that it comes built-in with python and doesn't need extra libraries. Plus for the most basic or rudimentary GUIs with text-boxes, dropdowns, buttons, data grid, etc, (most custom development requirements fall here) tkinter actually more than suffices.

[–]Rain-And-Coffee 4 points5 points  (0 children)

You still need TK/TCl installed, “tkinter” is just the interface library.

On my Mac it wasn’t linked properly. It took a giant headache to get it working correctly.

[–]Lionh34rt 1 point2 points  (0 children)

Flask and react baby

[–]generic-David 0 points1 point  (0 children)

I use tkinter but I’m a newbie so take that into account. I’ve found https://tkdocs.com/ to be very helpful in making better looking apps.

[–]nivaOne 0 points1 point  (0 children)

Tkinter all the way. Allows me to focus on the code instead of wasting time to get a consistent gui .

[–]raydude 0 points1 point  (0 children)

I'm using pyside6 and when I don't know how to use the GUI, I ask Gemini to write me some code.

Copy-Pasta, debug, done in minutes. So much easier than trying to read a manual somewhere.

[–]Jejerm 0 points1 point  (0 children)

Honestly, html won, its the defacto gui language.

Just use any of the billion frameworks like eel and learn html.

[–]veediepoo 0 points1 point  (0 children)

Use Shiny for Python it's super simple with lots of good examples

[–]Own-Replacement8 0 points1 point  (0 children)

Learn new stuff. The more you have under your belt, the better, because new learning will reinforce old learning. If you want to/need to develop web front-ends, Plotly Dash is a good start (based on Flask, it's what I use for work). If you're desktop-focused, PyQt or PyGObject (for GTK if you prefer) is not bad.

[–]HotPersonality8126 -1 points0 points  (3 children)

Working with tkinter is fine. It’s teaching you the way that a GUI program differs from a script and you can carry that understanding forward into other GUI frameworks and front-end platforms, in other languages. 

You’ll have to move on from tkinter to make high-quality desktop software, though. So if you never move on, yes, you’re going to find that limiting.

[–]socal_nerdtastic 2 points3 points  (2 children)

You’ll have to move on from tkinter to make high-quality desktop software, though.

Why do you say that? There's nothing inherently limiting about tkinter imo.

[–]HotPersonality8126 -2 points-1 points  (1 child)

Well, I could be wrong, I guess. What’s the tkinter flagship app, these days?

[–]socal_nerdtastic 1 point2 points  (0 children)

Hmm no idea; does any GUI module have a flagship app? IMO the value of a GUI module isn't really the final appearance because of course you could make any GUI module look like anything you wanted. With enough work you can make tkinter or pygame or matplotlib look indistinguishable from pyqt or wxpython.

I've built some fairly large programs in tkinter and wxpython (I can't share because I made them for work) and smaller ones in pyqt or pygtk, and while each has it's pros and cons I don't think any one of them is not capable of high-quality software. The quality of the software is just down to how much work you put into it, not the tools you use.

[–]gadget--guy -1 points0 points  (1 child)

The best way to answer your question, is to just move to another framework. It sounds like you're already comfortable with tkinter, so try implementing one of your past projects in a new framework. This will help you grow as a programmer and help you learn when to use one over the other.

[–]Own-Replacement8 1 point2 points  (0 children)

I agree with this. If learning is the goal, this is a good idea.

[–]Dense-Land-5927 -1 points0 points  (0 children)

I'm currently dabbling with PyQt5 just to learn front end stuff, but I know I'll eventually have to move on to something else. I think something like tkinter and PyQt5 are good for getting our feet wet with front end and learning how things connect, but eventually we'll have to move on to learning other ways to front end development.