Почему качество 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
Надеюсь, это поможет.