Как написать настольное приложение, которое использует HTML и CSS для пользовательского интерфейса и Python / Perl / C ++ / Java для обработки? - PullRequest
11 голосов
/ 01 октября 2010

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

Как использовать движки рендеринга, такие как gecko, webkit и т. Д. В python?Какой из них больше подходит для работы с python? Есть ли движок рендеринга «только html / css» без javascript?

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

Ответы [ 10 ]

1 голос
/ 01 октября 2010

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

Некоторые привязки веб-набора:

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

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

1 голос
/ 01 октября 2010

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

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

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

1 голос
/ 01 октября 2010

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

1 голос
/ 01 октября 2010

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

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

0 голосов
/ 25 февраля 2015

Вы можете встроить компонент веб-браузера в приложение 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");
    }
}
0 голосов
/ 19 февраля 2015

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

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

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

0 голосов
/ 06 марта 2013

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

  1. Они позволяют вам писать пользовательский интерфейс в HTML и CSS, и вы можете иметь свой код обработкив C ++ это обработать.
  2. Это также позволяет вам писать сценарии проверки в сценарии TI (например, Java Script) для проверки входных данных перед их обработкой.
  3. Размер двоичного файла был чуть меньше 1 МБ, поэтому вы можете легко упаковать его вместе со своими двоичными файлами.
  4. Это был открытый исходный код / ​​бесплатный для использования.
  5. Это также позволит вам создавать анимации на основе TIScript / CSS.

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

0 голосов
/ 22 декабря 2012

Если вы пишете на 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
0 голосов
/ 01 октября 2010

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


Найдите облегченный сервер, или лучше - вставьте один в ваше приложение. Вот и все.

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

Посмотрите, как работает ртутный ртутный Меркуриал. [Питон]

Однажды я сделал крошечное приложение, которое выполняло проверку орфографии через http на локальном хосте в java с классом httprequest. [работал на win и linux]

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

После запуска пользователь может указать localhost: somesillyport или вызвать открытие localhost: somesillyport в браузере.

0 голосов
/ 01 октября 2010

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

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

"html renderer" [insert-language-here]

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...