Можно ли использовать 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
переменная, чтобы ваш код получил доступ к этому скрытому экрану.