Зернистый рендеринг с помощью TkinterWeb на экране высокого разрешения в macOSPython

Программы на Python
Ответить
Anonymous
 Зернистый рендеринг с помощью TkinterWeb на экране высокого разрешения в macOS

Сообщение Anonymous »

В приложении с графическим интерфейсом, созданном с использованием Python 3.13 + tkinter + Tk 8.6, мне нужно отобразить некоторый контент с расширенным форматированием. Это в HTML с CSS. Я установил модуль TkinterWeb, который отображает HTML и позволяет использовать большую часть CSS, но рендеринг очень зернистый. Это как на экране начала века.
В качестве минимального примера приведу пример использования от разработчика модуля:

Код: Выделить всё

from tkinterweb import HtmlFrame #import the HTML browser
import tkinter as tk #python3
root = tk.Tk() #create the tkinter window
frame = HtmlFrame(root) #create the HTML browser
frame.load_website("http://tkhtml.tcl.tk/tkhtml.html") #load a website
frame.pack(fill="both", expand=True) #attach the HtmlFrame widget to the parent window
root.mainloop()
Это отображает веб-сайт, и на моем Mac вы почти можете посчитать пиксели. Все остальное, визуализируемое tkinter, очень четкое, поэтому он полностью использует разрешение экрана; это происходит только с виджетами, добавленными tkinterweb.

Попытки решения

Я сделал следующее, предложенное ИИ:
  • Отрегулируйте коэффициент масштабирования в Tk с помощью root.tk.call('tk', 'scaling', 2.0), а также с другими значения (где-то между 0,3 и √5). Это не помогает - имеет смысл, поскольку проблема, похоже, не связана с Tk или tkinter.
  • Вручную установите ширину и высоту виджета HtmlFrame - не повезло
  • Установите переменные среды TK_SILENCE_DEPRECATION=1 и NSHighResolutionCapable=True – разницы нет.

Альтернативы

Есть и другие модули, отображающие HTML, но они не очень подходят:
  • tkhtmlview: практически не использует CSS и поэтому выглядит ужасно (хотя и не зернисто)
  • tkinterhtml: не поддерживается с 2016 года (Python 3.5), создатель предостерегает от его использования
  • цефпитон: оборачивает полный браузер Chromium большим двоичным исполняемым файлом... Давайте
  • передадим HTML в WebKit (движок рендеринга MacOS Safari) через модуль PyObjC и ряд других модулей, и затем он отображается в отдельном окне
  • просто открывая его в веб-браузере (а не то, что я пытаюсь сделать).
    Что могло бы быть причиной такого зернистого рендеринга на экране с высоким разрешением, в то время как tkinter отображает все свои виджеты и текст идеально четкими?

    Подробнее здесь: https://stackoverflow.com/questions/793 ... n-in-macos
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»