Почему качество Tkinter намного хуже ухудшается на окнах?

Я разработал приложение python с Tkinter на Mac. Он включает в себя формы и рисунки холста. На Mac это выглядит великолепно. Однако на моем ноутбуке Dell (дисплей 4K и более мощный, чем мой Mac) Tkinter ui выглядит очень пиксельно, а некоторые элементы расположены несколько иначе. Как эта проблема известна и что я могу сделать, чтобы сделать Tkinter лучше на Dell Windows 10 или других платформах в целом? Вот скриншот той же части пользовательского интерфейса (показывающий форму и рисунок холста)...

Окна (плохо) введите описание изображения здесь

Mac (нормальный)

введите описание изображения здесь

Ответы

Ответ 1

введите описание изображения здесь

Различия в отображении одного и того же приложения обусловлены различиями в механизмах рендеринга, используемых каждой операционной системой.

Это описано в паб-книге Pakt под названием TKinter GUI Application Development Blueprints

прохождение этой темы здесь.

Это может быть больно, но похоже, что наиболее распространенным решением для этого является обнаружение вашей среды и запись независимых стилей с помощью базы данных внешних опций Дополнительная информация доступна в документации здесь.

Ответ 2

Сглаживание разрешено только для объекта холста Tkinter в OSX. Вы можете получить aggDraw lib: http://effbot.org/zone/tkinter-aggdraw.htm как обходной путь, но в противном случае вы получите неровные линии при попытке нарисовать на холсте, Однако шрифты должны быть сглажены на всех основных платформах.

Ответ 3

Рассмотрим разрешение MAC как 1366x768 (ожидается). Предположим, вы делаете размер окна вашего приложения как 683x384, который равен (1366/2 x 768/2).

Когда приложение будет запущено на 4-кратном дисплее, оно отобразит размеры как 683x384 для главного окна, но его размеры на 4k будут 4k/2.

Итак, что вы можете сделать, напишите общую программу с переменными размерами экранов, чтобы она отрегулировала размер окна в соответствии с размером экрана.

Подробнее см. https://www.tutorialspoint.com/python3/python_gui_programming.htm

Надеюсь, это поможет.