'Why is the Tkinter render quality much worse on windows?

I have developed a python app with Tkinter on a Mac. It involves forms, and canvas drawings. On the Mac, it looks great. However on my Dell laptop (4K display, and more powerful than my Mac), the Tkinter ui appears very pixelated and certain elements are located slightly differently. What is this problem known as and what can I do to render Tkinter better on Dell Windows 10 or other platforms in general? Here is a screen shot of the same part of the UI (showing form and canvas drawing)...

Windows(bad) enter image description here

Mac(normal)

enter image description here



Solution 1:[1]

Antialiasing is only enabled for Tkinter canvas object in OSX . You can get the aggDraw lib: http://effbot.org/zone/tkinter-aggdraw.htm as a workaround, but otherwise you will get jagged lines when trying to draw on a canvas. Fonts however should be anti-aliased on all major platforms.

Solution 2:[2]

enter image description here

The differences in the display of the same application are due to differences in render engines used by each Operating system.

This is coverd in a Pakt pub ebook called Tkinter GUI Application Development Blueprints

passage regarding this topic available here.

It may be a pain to do but it looks like the most common fix for this is to detect your enviroment and write independent styles using the external option database more info is available in the documentation here.

Solution 3:[3]

Setting your DPI awareness to 1 should resolve your issue

from ctypes import windll
windll.shcore.SetProcessDpiAwareness(1)

Solution 4:[4]

Consider the resolution of the MAC as 1366x768 (expected),Suppose you are making your application windows size as 683x384 which is equal to (1366/2 x 768/2).

When the application will be run on a 4k Display it will display the dimensions as 683x384 for the main window but its dimensions on the 4k will be 4k/2.

So what you can do it write a general program with variable dimensions of the screens ,So that it will adjust its window size according to the screen size.

For more details refer to the https://www.tutorialspoint.com/python3/python_gui_programming.htm

Hope this will help.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 BHawk
Solution 2
Solution 3 758Gianni
Solution 4 babygame0ver