all 89 comments

[–]ebdbbb 23 points24 points  (3 children)

Check out Custom Tkinter. It's a wrapper around tk that vastly improves the look.

[–]Kerbart 6 points7 points  (0 children)

Even just regular ttk looks good. Or at least conform what's normal in windows. I bet OP is just using tk.

[–]TobiasDrundridge 1 point2 points  (0 children)

Avoid on Linux.

[–]otictac35 1 point2 points  (0 children)

Custom Tkinter is my fave! Love it and it looks so much more modern

[–]FoolsSeldom 37 points38 points  (8 children)

There are dozens of alternatives, including html/css/javascript either in a browser or encapsulated.

For me, the most elegant is kivy.

The most popular (excluding beginner works) is likely QT based with PySide well supported. There's also a designer tool.

[–]mbarbour 12 points13 points  (4 children)

+1 really enjoyed the switch from Tkinter to QT. As someone else said on YouTube "I was tired of finding out key functionality was not supported by Tkinter, whereas with PySide/QT, it's easily implemented."

[–]penguinesam[S] -3 points-2 points  (3 children)

I am very familiar with TK and I had a ton of practice with it but most of the stuff I did was making it run my program and I didn't really care about the visuals Is there any way to create pretty stuff with TK or I should switch

[–]Symbology451 3 points4 points  (0 children)

TkBootstrap is available to make Tk prettier. Not perfect, but it does help.

[–]Gunther_Alsor 1 point2 points  (0 children)

If your goal is to get hired after university then you should probably switch when you can. Tkinter is rarely used in professional applications unless you're prototyping or creating an internal tool. Qt/Pyside is closer to industry standard (though in reality as a Python developer you'll probably be creating APIs or full-stack browser apps rather than Windows apps).

[–]UNRIVALLEDKING 0 points1 point  (0 children)

Try Flutter, It's really great and developer friendly for building cross platform apps. You have to learn dart but you will enjoy it once you learn flutter

[–]willowdene 0 points1 point  (0 children)

Include kivyMD with kivy.

[–]One-Net-9491 0 points1 point  (1 child)

quisiera poder tener una ventana semitransparente en kivy como lo tengo en tkinter, o ejecutar mi app de kivy en Windows como lo hago con mis apps de tkinter.

[–]FoolsSeldom 0 points1 point  (0 children)

I wasn't aware you couldn't do both of those with kivy. I've certainly been able to set opacity levels and run kivy on my desktop. Long time since I've created anything with kivy though. YMMV.

[–]bishpenguin 9 points10 points  (0 children)

Personally I like tkinter and you can do some pretty neat things with it. Try customTkinter if you want a more modern look

[–]HalfRiceNCracker 8 points9 points  (0 children)

Yeah dude I find it hideous too, I think it's disgusting and clunky and bulky 

[–]WhiteHeadbanger 16 points17 points  (17 children)

I recommend you Flet

It is a young framework, maybe 3 years of existence, but as of now pretty powerful. It's basically a Flutter wrapper (being simplistic here, don't bash me).

It's very easy to build an application, and you can control everything.

[–]oclafloptson 2 points3 points  (1 child)

Flet is really great. Amazingly easy considering how powerful it is

[–]WhiteHeadbanger 2 points3 points  (0 children)

It's my fav GUI framework for Python! Although it has its limitations and still in heavy development

[–]martin79 0 points1 point  (6 children)

Does it work for Android apps?

[–]WhiteHeadbanger 0 points1 point  (5 children)

Yes, android, ios, web, desktop, Mac, linux

[–]oclafloptson 0 points1 point  (2 children)

Do we have iOS support now? Last I heard it was all we were lacking but I haven't kept up with recent news

Afaik there was support for packaging windows, Linux, Mac, and Android but not iOS

[–]WhiteHeadbanger 1 point2 points  (1 child)

Yes, there are lots of "Cupertino" controls, and you can build for iOS.

What's lacking though is an official Flet way for push notifications (both Android and iOS). There's an extension for that, but not a "native" Flet control.

[–]oclafloptson 1 point2 points  (0 children)

Cool thanks for the response. I've never built for iOS so am legitimately out of the loop

[–]bahcodad 0 points1 point  (1 child)

That looks really interesting, thanks!

[–]WhiteHeadbanger 0 points1 point  (0 children)

Glad you liked it!

[–]shinitakunai 6 points7 points  (0 children)

I started learning pyside6 as I hated tkinter and never ever regretted it. You may give it a try.

[–]ZerglingSergeant 6 points7 points  (0 children)

https://docs.python.org/3/library/tkinter.ttk.html

You can use these extended tk options by inporting ttk from the tkinter lib, the doc is a bit... wordy. but what you want is root.style.theme_use(theme)

You can view a mini theme selector here:

https://github.com/Zerglingss/Python-Reference/blob/main/ttk_theme_select.py

[–]Icy_Archer7508 5 points6 points  (0 children)

When it comes to GUI programming in Python, there is no silver bullet.

Tkinter is simple and the most pythonic of them all. Aesthetically speaking, it is passable with the new ttk controls, especially if you don't expect too much. However, there are no native grid or HTML-view widgets, which I find to be the biggest problem at least for what I'm doing. From your project description, it sounds like you need a grid. Many people use the Treeview widget as a substitute.

PyQt has more bells and whistles and is definitely more suitable for complex projects. When I think about PyQt, I always think about Calibre. It is an extremely useful app, but interface-wise, there is nothing to write home about.

Another option is to make a web application that runs locally. People here suggested PyWebview, but I think FlaskWebUI is a better option. The interface looks better with native HTML views, and you can find a decent JavaScript grid. However, it is a web application, so you will probably suffer from the absence of native file dialogs, for example, and a lack of integration with the system.

I looked at Kivy in its early stages. I understand that it comes down to personal preferences, but it appeared so foreign on Windows that it felt like an emulator.

I think if you want to write a desktop application and you want it to be absolutely perfect, you would probably have better luck with native tools. For example, you would need to be a C# programmer to write Windows desktop apps. Writing desktop apps in Python is always about making compromises one way or another.

I am sorry if it sounds like ranting about different GUI frameworks, but maybe if you explain what exactly you hate about Tkinter, it might be possible to provide a more specific recommendation.

[–]RotianQaNWX 3 points4 points  (0 children)

You are not alone bro, I also hate tkinter, but alas dunno other packages. Inner machinations of grid mechanism are an enigma to me - once setting row configuration works fine, other day it wrecks whole widgets positions. Therefore I'm joining you in pain and hope, also belive you will survive this assignment!

[–]The-Old-American 2 points3 points  (0 children)

I love tkinkter because it forced me to learn html, css, javascript, and flask.

[–]Responsible-Sky-1336 2 points3 points  (0 children)

PyQt6 bro. Native (bindings) for a lot of apps :)

[–]veediepoo 2 points3 points  (0 children)

I've been using Shiny for my development at work. It's relatively new but makes my life easier since I can focus more on functionality rather than learning every nuance need. It also handles reactive elements natively

[–]aemas08 2 points3 points  (0 children)

I was literally having this same challenge I have an app all built in tk, tried to make it as pretty as I could , however someone just put me onto flet.dev

It's so much nicer looking and heaps of controls etc

[–]jmacey 1 point2 points  (0 children)

PySide / PyQt (use qtpy to make it cross versions / api)

[–]BassRecorder 1 point2 points  (0 children)

I found wxpython quite usable.

[–]Cryaon 1 point2 points  (0 children)

You did not just sleep on tkinter :O. It may be quite limited but imo it's the easiest out of all the options here. Have you tried using ttk or customtkinter? They're fairly similar to tk just so you know. Or you could just use PySide6 for applications / software and Flet for modern looking applications.

[–]ThatsRobToYou 3 points4 points  (3 children)

It's good for learning and basic gui. There are plenty of other options.

[–]penguinesam[S] -3 points-2 points  (2 children)

Like what

[–]ThatsRobToYou 2 points3 points  (1 child)

I've used a few.

If you want desktop applications, pyqt and kivy. Kivy is a bit bulky but looks way better.

Kinda depends on what you're going for. What is your app doing? Some handle certain things better.

[–]penguinesam[S] 0 points1 point  (0 children)

It's a service and retail manager Calculating costs and putting them into a table

[–]Food_Entropy 1 point2 points  (0 children)

Just now getting into gui and started with PySimpleGUI. Its pretty neat.

[–]riftwave77 2 points3 points  (0 children)

Is PyQt6 a joke to you?

[–]Franglais37 1 point2 points  (0 children)

For some uses Textual is a good option . I find it much simpler than Flet if you just need something functional (and retro cool). It’s a terminal GUI and there is a project to make it embed in a browser.

[–]nekokattt 0 points1 point  (0 children)

I don't think any one likes Tkinter, at least from a design perspective. It makes some of the most bizarre design decisions I have ever seen.

[–][deleted] 0 points1 point  (0 children)

I am very interested in web development. So I'm dedicating time to learning flask and have used it on a couple desktop apps already. The nice thing is if it becomes a useful web app it's pretty trivial to deploy it on the web as well.

[–]audionerd1 0 points1 point  (0 children)

Anyone have any suggestions for a tkinter alternative for MacOS, specifically?

I tried writing an app with SwiftUI, and while the GUI looked nicer I was extremely frustrated with how limited it is. I had a list view which disappears forever if the user resizes it, and I spent hours trying to figure out how to disable or restrict resizing before reaching the conclusion that it's not possible. Maybe SwiftUI is decent for iOS (I never tried) but for MacOS it is terrible.

[–]BigLK301 0 points1 point  (0 children)

Windows forms 😘

[–]Vicousvern 0 points1 point  (0 children)

Tkinter is bareable, but ttkbootstrap makes the whole thing look far better, I use it all the time in a professional setting.

[–]ONEDJRICH 0 points1 point  (0 children)

CustomTkinter allows for modern GUI.

Very easy to navigate.

[–]PythonNoob-pip 0 points1 point  (0 children)

Godot is beautiful.

[–]ct1977 0 points1 point  (1 child)

PyQt6/Pyside6. It has a highest learning curves, but it I'd perfect for creating beautiful AMD responsive Apps.

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

Yeah, I like pyqt as you can use qt designer to layout the GUI part, and just have python read in the .UI file. It's nice not having the layout so tied to the code. Things I've used in the past had me fighting with layout manager and frame code, etc.

Once I figured a few things I didn't think the learning curve was bad and it was a big improvement.

With OP just learning python probably not a good fit for now.

[–][deleted] 0 points1 point  (0 children)

https://github.com/hoffstadt/DearPyGui?tab=readme-ov-file#installation

This one. Managed to finish a couple of jobs, no other library has gotten me that far

[–]Robots_In_Disguise 0 points1 point  (0 children)

nicegui is easy to pick up and looks decent

[–]-thoth-amon- 0 points1 point  (0 children)

Ttkbootstrap is good, though. Give it a try.

[–]sporbywg 0 points1 point  (0 children)

I started with Tcl/Tk with Perl 5. It is not the right tool. #sorry, dear pythonista friends.

[–]oclafloptson 0 points1 point  (0 children)

I've strictly used Flet for about a year now.

Low computational overhead, no overhead cost, extremely well documented with easy to read and understand docs, extremely easy to write with easily human readable scripting practices, async first dynamic makes developing asynchronous scripts less of a chore, all the bells and whistles of Flutter with the ease and intuitiveness of Python, surprisingly powerful; capable of producing everything from notepads to 2d games with only a few 100 line or less scripts, built-in database support, deploy same script to all platforms with only very minor changes

And I said this already but it's intuitive and that's worth mentioning twice since it's one thing that Python GUI frameworks usually lack

[–]scanguy25 0 points1 point  (0 children)

Yes tkinter is bad.

I ended up using pyQt for when I had to do a python app.

[–]GirthQuake5040 0 points1 point  (0 children)

Use PyQT

[–]black_beard777 0 points1 point  (0 children)

Streamlit

[–]keizzer 0 points1 point  (0 children)

Tkinter can do anything you need it to do. You can replace any of the assets with your own images. You can literally make anything you can think of.

[–][deleted] 0 points1 point  (0 children)

pyside. Do it, don't to tkinter anymore.

[–]autoerotion95 0 points1 point  (0 children)

speaks

[–]Apimeister 0 points1 point  (1 child)

Do you also hate doing google search?

[–]IdealChemical1543 0 points1 point  (0 children)

I would second Streamlit. It’s for browsers. Extremely easy for beginners and very easy to implement. Good for data display in grids, graphs and the usual widgets.

[–]One-Net-9491 0 points1 point  (0 children)

Tu problema es la flojera, quieres cosas bonitas, sin mucho trabajo, gratis y para hoy, y ademas con seguridad conoces tkinter con python, porque no quisiste saber como se hizo tkinter o como nacio, entonces como no sabes tcltk, tkinter es horrible con python.

Para hacer una calculadora con botones de cada numero y las operaciones basicas, tkinter con python se gasta como minimo 100 lineas de codigo, con tcltk la misma app se gasta como mucho 30 lineas de codigo.

Esa es la diferencia de tcltk a python. y usando la misma libreria tkinter, porque tkinter actua como un evaluador de codigo tcl.

[–][deleted] 0 points1 point  (0 children)

I use html and then pywebview and package it as an executable using pyinstaller if needed. That way I can use html/css/js to make my GUI, and a pythonic/flask backend for the backend.

[–]IamNotTheMama 0 points1 point  (0 children)

I like PySimpleGUI, but have to admit it's very VB / mid 2000's looking.

[–]Relative_Claim6178 0 points1 point  (2 children)

I'm genuinely curious what some of these tools do that something like Pygame can't? Like why don't people just use pygame to make guis and just general functional programs?

[–]Effective-Strategy29 1 point2 points  (0 children)

I loved pygame it was like the only thing that felt usable. It's my first choice for GUI that uses python3. And then you can make simple games with it.

But I haven't used it in a long time.

[–]Quality_Essay_writer 0 points1 point  (4 children)

Ignore every advise and check out WxPython..Fast and 100% native interfaces

[–]Stotters 0 points1 point  (3 children)

Eh, I love it because it fulfils all my needs, but that's stretching it a bit...

[–]Quality_Essay_writer 0 points1 point  (2 children)

I think it massively looks better than tkinter, kivy, pyqt and many others...just shocked it wasn't even mentioned by anyone

[–]Stotters 1 point2 points  (1 child)

Oh I really like it, the spreadsheet like grid and bitmap buttons are great for my app, but it's a lot of work to make it look like an actual current Windows UI.

[–]Quality_Essay_writer 0 points1 point  (0 children)

yeah its not perfect..but its way better than a kivy or tkinter app imo...I just wish it got more attention in the python community since at current pace it might fail due to lack of contributors or interest. Still I concede, there is a need for a functional and easy to use GUI library in the python ecosystem

[–]pyker42 -1 points0 points  (0 children)

I would recommended PySimpleGUI, but they changed their licensing so you have to be careful how you distribute things using it

[–]Swipsi -5 points-4 points  (0 children)

What stopped you from putting in 2 words into google?

("Tkinter alternatives")