2010-01-06 3 views
0

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

app = QApplication(sys.argv, False) 

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

browser = KHTMLPart() 

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

browser.view.resize(1024, 768) 

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

browser.show() 

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

ответ

1

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

1

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

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