Можно ли использовать KHTMLPart полностью с консоли?

Я использую компонент KHTMLPart из библиотеки PyKDE (в Python), чтобы загрузить некоторые веб-страницы в фоновом режиме и вернуть размеры определенных элементов в пикселях. Мне действительно не нужен визуальный вывод этого скрипта, скорее всего, я буду запускать его на сервере без установленного X. Проблема в том, что когда я говорю моему приложению, что оно запускается только для консоли, вот так:

app = QApplication(sys.argv, False)

мой сценарий тогда segfaults на линии, где я инициализирую KHTMLPart:

browser = KHTMLPart()

Кроме того, мне нужно установить размер окна браузера KHTML на 1024x768, вызвав:

browser.view.resize(1024, 768)

Это, кажется, не имеет никакого эффекта, пока я не позвоню:

browser.show()

Предыдущее вызывает окно браузера, даже если это ненадолго. Я мог бы запустить на сервере простой оконный менеджер, такой как fluxbox, и он будет делать то, что я хочу, но я был бы намного счастливее, если бы он мог полностью функционировать как консольное приложение - если это вообще возможно. Есть ли способ добиться этого?

2 ответа

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

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

Поэтому я не вижу возможности обойтись без работающего X-сервера. Но этот сервер не должен использовать дисплей. Вы можете запустить команду vncserver за это. Он скажет вам ценность, которую вы будете использовать для DISPLAY переменная, чтобы ваш код получил доступ к этому скрытому экрану.

Другие вопросы по тегам