DEV Community

Cover image for Python GUI, PyQt vs TKinter
amigos-maker
amigos-maker

Posted on • Updated on

Python GUI, PyQt vs TKinter

Both Tkinter and PyQt are useful for designing acceptable GUI’s, but at the same time, they differ in terms of adaptability and functionality.

Mostly, Tkinter is all about writing GUI yourself, program your settings or functionality in the same script.

On the other hand, in PyQt, you separate GUI in a script, and use your Python knowledge from another script.

Instead of creating your own code for the user interface, you can simply adopt the Qt Designer functions to develop your application.

Therefore, let’s see what the main differences and advantages of PyQt vs. Tkinter are.

PyQt

Advantages of using PyQt

  1. Coding flexibility – GUI programming with Qt is designed around the concept of signals and slots for establishing communication amongst objects. That permits flexibility when dealing with GUI events and results in a smoother codebase.
  2. More than a framework – Qt uses a wide array of native platform APIs for the purpose of networking, database creation, and many more. It offers primary access to them via a unique API.
  3. Various UI components – Qt offers several widgets, such as buttons or menus, all designed with a basic appearance across all supported platforms.
  4. Various learning resources – because PyQt is one of the most used UI frameworks for Python, you can get easy access to a wide array of documentation.

  1. Easy to master – PyQt comes with a user-friendly, straightforward API functionality, along with specific classes linked to Qt C++. This allows the user to use previous knowledge from either Qt or C++, making PyQt easy to understand.

Disadvantages of using PyQt

  1. Lack of Python-specific documentation for classes in PyQt5
  2. It requires a lot of time for understanding all the details of PyQt, meaning it is a quite steep learning curve

Tkinter

Advantages of using Tkinter

  1. Available out-of-charge for commercial usage.
  2. It is featured in the underlying Python library.
  3. Creating executables for Tkinter apps is more accessible since Tkinter is included in Python, and, as a consequence, it comes with no other dependencies.
  4. Simple to understand and master, as Tkinter is a limited library with a simple API, being the primary choice for creating fast GUIs for Python scripts.

Disadvantages of using Tkinter

  1. Tkinter does not include advanced widgets.
  2. It has no similar tool as Qt Designer for Tkinter.
  3. It doesn't have a native look and feel

tkinter look and feel

What to choose?

Anyhow, in most situations, the best solution is using PyQt, considering the advantages and disadvantages of both PyQt and Tkinter.

GUI programming with Qt is created around signals and slots for communication amongst objects. Thus, it allows flexibility, while it gets to the programmer access to a wide array of tools.

Tkinter can indeed be useful for those that want to design a fundamental and rapid GUIs for Python scripts, yet for a more advanced programming result, almost all programmers opt for the functionalities that come with PyQt.

They admit it is worth mastering the advanced knowledge of PyQt due to the professional programming results that come along.

Thus, when it comes to PyQt vs. Tkinter, it all depends on how much you want to learn and discover.

Resources:

Top comments (5)

Collapse
 
rodeone2 profile image
robin deatherage

Actually it is Tk that is far more advanced than PyQt or Wx. I will explain why. Tk is still ahead of most all GUI Toolkits by as much as fifteen to twenty years as it is one of three of the only GUI Widget Toolkit made from the Original Toolkit Library.

And is one of only three GUI Toolkits besides GTK and the NCSA Mosaic Canvas Toolkit that powers both the proprietary underlying HTML rendering Engines used by Netscape Navigator, WebKit, WebView, IE, Edge, Safari, Chrome, Chromium among a few others.

The main reason it is so advanced is its ability to pre set JavaScript triggers for after render events with its tags, marks, configs() and its Binding Methods. One of these binding methods is the ability to set hyperlinks while suspending their path data for processing web request from user clicks in both regular and OpenClick() events.

Many also are not aware that before 2009 there were still over fifty Web Browsers with Rendering Engines entirely developed using Tk that at that time were still being downloaded. Now Python does lack the 3D OpenGL that comes with Tk 8.6 and lacks the Video Codecs that are also in the Tk version, but they can be PyObject directly tied in and used, but only a handful of us are doing so.

Also to Mimic all other GUI Libraries all one has to do is place all widgets and or create your own and ploace them individually inside Frames for each one. The Frames are the secret behind Tkinter and if placed within a Canvas give you full things such as radius buttons, cells for rendering HTML Blocks and or New Widgets. Thanks !

Collapse
 
ertywek profile image
ErtY'wek

"The main reason it is so advanced is its ability to pre set JavaScript triggers for after render events with its tags, marks, configs() and its Binding Methods. One of these binding methods is the ability to set hyperlinks while suspending their path data for processing web request from user clicks in both regular and OpenClick() events. " Can you explain to a programming newbie?

Collapse
 
vicmeunier profile image
Victor Meunier

Interesting comparison. I've used Qt in C++ in the past and recently used PyQt5 to make a prototype (github.com/MrEliptik/shotty) and I loved it! The lack of python specific documentation can be a bit painful from time to time but hopefully someone on SO faced the same issue. Also, the bindings are really similar to Qt for c++ so usually you can use the C++ docs.
You talked about Widgets for PyQt but you could also use QML right? I think it's especially interesting since it enables a lot of customization and can be interesting to make good looking apps such as desktop.telegram.org/.

Collapse
 
amigosmaker profile image
amigos-maker

Looks like a cool app you made! Right, you can use QML also

Collapse
 
mikaeal profile image
michael

I think Tkinter is underrated...partly because of the learning curve as you have to code every widget.But when you get a hang of it, it’s really great.