Как написать настольное приложение, которое использует 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");
}
}