Как написать настольное приложение, которое использует HTML и CSS для пользовательского интерфейса и python/perl/С++/java для обработки?

Различные языки имеют разные инструменты GUI, но очень сложно добиться привлекательных пользовательских интерфейсов так же хорошо, как мы можем использовать HTML и CSS с меньшими усилиями. Я не выполняю свое приложение в javascript, так как я сомневаюсь, что он имеет все необходимые библиотеки, и я хочу сделать это в python.

Как использовать механизмы рендеринга, такие как gecko, webkit и т.д. в python? Какой из них больше подходит для работы с python?. Есть ли какой-нибудь "только html/css" механизм рендеринга без javascript?

Легко ли писать обработчики событий для событий DOM и манипулировать DOM в python?

Ответ 1

update: Это старый ответ, в настоящее время вы хотите использовать встроенный браузер в своем приложении (* веб-проекты и т.д.), но на момент написания такой технологии не было. Ответ по-прежнему остается в силе, если вы не хотите добавлять в пакет несколько приложений на несколько мегабайт.


Найдите легкий сервер, или лучше - вставить в приложение. Что это.

Java имеет классы для обслуживания http. Python тоже хорошо работает.

Посмотрите, как работает ртутная служба hg. [Python]

Я когда-то сделал крошечное приложение, которое обслуживало проверку орфографии aspell через http на localhost в java с классом httprequest. [работал над win и linux]

Создайте свое приложение как сервер, который выводит некоторый html и использует POST для выполнения действий. Сделайте интерфейс в HTML + CSS + JS. Приятно и легко.

После запуска точки на localhost: somesillyport или запуск открытия localhost: somesillyport в браузере.

Ответ 2

Есть несколько способов, которые вы могли бы сделать по этому поводу: самым простым было бы, вероятно, использовать что-то вроде Adobe AIR, которое это в основном механизм рендеринга Webkit с расширенным механизмом javascript, который позволяет вам программировать более сложные функции.

В противном случае вы можете проверить проект wxWebConnect, который предназначен для того, чтобы "разработчики могли быстро интегрировать расширенные возможности веб-браузера в свои собственные Приложения." и предоставляется как библиотека управления wxWidgets, с которой должно быть знакомо большинство разработчиков python. Он интегрирует механизм рендеринга Mozilla Gecko в ваше приложение.

Ответ 3

Вы должны проверить Mozilla проект XUL. Это позволяет вам создавать приложения с легкостью HTML и "стилизовать" графический интерфейс с помощью фактического CSS.

Ответ 4

Пульт дистанционного управления Toolkit делает это, в основном. Это позволяет вам писать приложения для стиля рабочего стола (программирования), отображаемые на экране браузера.

Даже если он пытается скрыть детали html/css/js, вы можете расширить систему новыми виджетами или расширить существующие, используя в основном все, что предлагает html (5), css, js.

В отличие от Pajamas или GWT, он не компилируется в javascript. Ваш код остается сервером, и вы можете в основном делать все, что вы делаете (открывать файлы, открывать соединения, сохранять состояние и т.д.)

Ответ 5

В дополнение к параметрам, уже предоставленным другими:

Некоторые привязки webkit:

  • qtwebkit (для pyqt или pyside)
  • wxwebkit (еще не совсем готов, но есть доступность для wxpython)
  • pywebkitgtk (не знаю, как легко получить его в Windows)

Что касается gecko/mozilla, вы можете взглянуть на PyXPCOM, возможно, через pyxpcomext. Разница здесь - если я правильно ее понимаю - это то, что вместо использования mozilla изнутри python, python внедряется в mozilla. Но должно быть возможно сделать приложение xulrunner, которое может использовать python.

Ответ 6

Если бы вы спросили об одном исходном языке в частности, я бы оставил этот ответ как комментарий, а не полноценный вопрос. Однако вопрос чрезвычайно широк... спрашивая об использовании интерфейса HTML/CSS в одном из четырех внешних языков.

В этом случае вы должны просто выполнить серию поисков в Интернете по адресу:

"html renderer" [insert-language-here]

... и потратить некоторое время на просмотр различных опций, доступных для встраивания интерфейса HTML/CSS в фоновое языковое приложение.

В конечном счете, вы, скорее всего, завершаете работу с рендерером Mozilla Gecko... либо в своей необработанной форме, либо опосредованно через одну из многочисленных библиотек, которые предоставляют дружественные к ней оболочки.

Говоря о технологиях Mozilla, вы также можете проверить XULRunner (позволяет легко скомбинировать пользовательский интерфейс с использованием XML с CSS и JavaScript) или, может быть, даже с Prism (принимает приложение, запущенное на HTTP-сервере, и представляет его пользователь в качестве настольного приложения).

Ответ 7

Если вы пишете на Java, посмотрите на JavaFX. С официального сайта:

Встроенный браузер позволяет выполнять следующие задачи в ваши приложения JavaFX:

Render HTML content from local and remote URLs

Obtain Web history

Execute JavaScript commands

Perform upcalls from JavaScript to JavaFX

Manage web pop-up windows

Apply effects to the embedded browser

Ответ 8

Если вы собираетесь перенести его в окна, я настоятельно рекомендую HTMLLayout

  • Они позволяют писать UI в HTML и CSS, и вы можете иметь свой код обработки на С++ для его обработки.
  • Он также позволяет писать сценарии проверки в TI script (например, Java Script) для проверки входов перед его обработкой.
  • Бинарный размер был чуть ниже 1 МБ, поэтому вы можете легко упаковать его вместе со своими двоичными файлами.
  • Это был открытый источник/бесплатный.
  • Это также позволит вам создавать анимации на основе TIScript/CSS.

Насколько мне известно, он лучше всего подходит для разработки графических приложений в Windows.

Ответ 9

Отметьте Sciter, он был разработан как встраиваемый механизм HTML/CSS/scripting, который будет использоваться в качестве слоя пользовательского интерфейса для настольных приложений.

Вы также можете найти Введение технологии Sciter в статью CodeProject.

Sciter содержит TIScript на борту, что почти "Python, но с синтаксисом JavaScript".

Ответ 10

Вы можете встроить компонент веб-браузера в свое приложение Java Swing/JavaFX Desktop, которое отображает графический интерфейс, построенный с использованием HTML5 + CSS + JavaScript. Вы можете увидеть статью, в которой описывается, как это сделать на http://java.dzone.com/articles/htmlcssjavascript-gui-java-0

Одна из библиотек Java Swing/JavaFX, которая позволяет внедрять Chromium в приложения Java, JxBrowser. Используя JxBrowser API, вы можете загружать любую веб-страницу и работать с ее DOM и JavaScript. Вы даже можете вызывать методы Java из кода JavaScript и наоборот. Например:

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;

public class JavaScriptJavaSample {
    public static void main(String[] args) {
        Browser browser = new Browser();
        browser.registerFunction("MyFunction", new BrowserFunction() {
            public JSValue invoke(JSValue... args) {
                for (JSValue arg : args) {
                    System.out.println("arg = " + arg);
                }
                return JSValue.create("Hello!");
            }
        });
        browser.addLoadListener(new LoadAdapter() {
            @Override
            public void onFinishLoadingFrame(FinishLoadingEvent event) {
                if (event.isMainFrame()) {
                    Browser browser = event.getBrowser();
                    JSValue returnValue = browser.executeJavaScriptAndReturnValue(
                            "MyFunction('Hello JxBrowser!', 1, 2, 3, true);");
                    System.out.println("return value = " + returnValue);
                }
            }
        });
        browser.loadURL("about:blank");
    }
}