2010-10-01 9 views
11

Diverse lingue hanno diversi toolkit GUI, ma sembra molto difficile ottenere interfacce utente attraenti e utilizzare HTML e CSS con meno sforzo. Non faccio la mia applicazione in javascript perché dubito che abbia tutte le librerie richieste e voglio farlo in python.come scrivere un'applicazione desktop che utilizza HTML e CSS per l'interfaccia utente e python/perl/C++/java per l'elaborazione?

Come utilizzare i motori di rendering come gecko, webkit ecc in python? Quale sarà più adatto per lavorare con Python? C'è un motore di rendering 'solo html/css' senza javascript?

Sarà facile scrivere gestori di eventi per eventi DOM e manipolare DOM in python?

risposta

0

aggiornamento: Questa è una vecchia risposta, al giorno d'oggi si vuole andare con un browser incorporato nella tua app (* progetti webkit ecc.), Ma al momento della scrittura, non esisteva tale tecnologia. La risposta è ancora valida se non vuoi aggiungere abbastanza megabyte alla tua app pacchettizzata.


trovare un server leggero, o meglio - incorporare uno nell'applicazione. Questo è tutto.

Java ha classi per servire http. Anche Python lo fa bene.

Guarda come funziona hg serve di mercurial. [python]

Una volta ho fatto una piccola app che ha servito il controllo ortografico di aspell via http su localhost in java con la classe httprequest. [lavorato su win e linux]

Crea la tua applicazione come server che emette alcuni html e usa il POST per fare le azioni. Fai l'interfaccia in HTML + CSS + JS. Bello e facile.

Dopo l'esecuzione, puntare l'utente su localhost: somesillyport o trigger opening localhost: somesillyport in un browser.

1

Ci sono un paio di modi in cui potresti voler fare questo: il più semplice sarebbe probabilmente usare qualcosa come Adobe AIR, che è fondamentalmente un motore di rendering Webkit con un motore javascript esteso, che ti permette di programmare in più funzionalità complessa.

In alternativa, è possibile controllare il progetto wxWebConnect, che mira a consentire agli "sviluppatori di integrare rapidamente funzionalità avanzate di browser Web nelle proprie applicazioni". ed è fornito come libreria di controllo wxWidgets, che è qualcosa con cui la maggior parte degli sviluppatori Python dovrebbe avere familiarità. Integra il motore di rendering Mozilla Gecko nella tua applicazione.

0

Se avessi chiesto in particolare un linguaggio di back-end, avrei lasciato questa risposta come un commento piuttosto che una domanda a tutti gli effetti. Tuttavia, la domanda è estremamente ampia ... chiedendo l'uso di un'interfaccia HTML/CSS in uno dei quattro lingue di back-end.

Stando così le cose, si deve solo fare una serie di ricerche web su:

"html renderer" [insert-language-here]

... e trascorrere qualche ora navigando attraverso le varie opzioni disponibili per l'incorporamento di un'interfaccia HTML/CSS in un back -applicazione lingua avanzata.

In definitiva, è probabile che si stia per finire usando il renderer Gecko di Mozilla ... o nella sua forma grezza, o indirettamente attraverso una delle numerose librerie che forniscono wrapper compatibili con lo sviluppo.

Parlando di tecnologie Mozilla, potresti anche voler controllare XULRunner (ti consente di creare facilmente un'interfaccia utente usando XML con CSS e JavaScript), o forse anche Prism (prende un'app in esecuzione su un server HTTP e la presenta a l'utente come app desktop).

1

Dovresti controllare Mozilla XUL project. Ti permette di costruire app con la semplicità dell'HTML e "modellare" la GUI con i CSS reali.

1

Remote Control Toolkit fa questo, fondamentalmente. Ti consente di scrivere applicazioni di stile desktop (di programmazione) che vengono visualizzate in un browser.

Anche se tenta di nascondere i dettagli di html/css/js, è possibile estendere il sistema con nuovi widget o estendere quelli esistenti, utilizzando praticamente tutto ciò che offre html (5), css, js.

A differenza di Pigiama o GWT, non viene compilato in javascript. Il tuo codice rimane serverside e si può praticamente fare tutto quello che siete abituati a fare (file aperti, connessioni aperte, mantenere lo stato, e così via)

1

di integrare le opzioni già dato da altri:

Alcuni attacchi WebKit:

  • qtwebkit (per PyQt o PySide)
  • wxwebkit (non ancora pronto, ma c'è una pre-release per wxpython disponibili)
  • pywebkitgtk (non so come e bis SY è di ottenere su Windows)

Per quanto riguarda Gecko/mozilla, si potrebbe avere uno sguardo a PyXPCOM, probabilmente attraverso pyxpcomext. La differenza qui - se ho capito bene - è che invece di usare mozilla all'interno di python, python viene incorporato in mozilla. Ma dovrebbe essere possibile creare un'applicazione xulrunner che possa usare python.

0

Se si scrive in Java, dare un'occhiata a JavaFX. Dal sito ufficiale:

Il browser incorporato consente di eseguire le seguenti operazioni in applicazioni 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

internamente è JavaFX Web Kit, tuttavia? È difficile trovare informazioni al riguardo e l'ultima cosa di cui si ha bisogno è Y.A.B. (Ancora un altro browser) –

0

Se avete intenzione di portarlo a finestre consiglio vivamente HTMLLayout

  1. Permettono di scrivere l'interfaccia utente in HTML e CSS e si può avere il codice di elaborazione in C++ per elaborarlo.
  2. Consente inoltre di scrivere script di convalida nello script TI (come Java Script) per convalidare gli input prima di elaborarli.
  3. La dimensione binaria era appena inferiore a 1 MB in modo da poterla facilmente imballare insieme ai file binari.
  4. Era open source/libero da usare.
  5. Consente inoltre di eseguire animazioni basate su TIScript/CSS.

Per quanto ne so è meglio per lo sviluppo di applicazioni GUI su Windows.

+0

Non sembra la sua opensource http://www.terrainformatica.com/htmlayout/prices.whtm – balki

0

Controllare Sciter, è stato progettato come motore HTML/CSS/scripting esattamente integrabile da utilizzare come strato UI di applicazioni desktop.

È inoltre possibile trovare l'articolo Sciter technology introduction su CodeProject utile.

Sciter contiene TIScript a bordo che è quasi "Python ma con sintassi JavaScript".

0

È possibile incorporare il componente del browser Web nell'applicazione Java Swing/JavaFX Desktop che visualizza la GUI costruita con HTML5 + CSS + JavaScript. Si può vedere un articolo che descrive come fare questo a http://java.dzone.com/articles/htmlcssjavascript-gui-java-0

Uno dei Java Swing/librerie JavaFX che consente di incorporare cromo nelle applicazioni Java è JxBrowser. Usando l'API JxBrowser puoi caricare qualsiasi pagina web e lavorare con il suo DOM e JavaScript. Puoi persino chiamare i metodi Java dal codice JavaScript e viceversa. Ad esempio:

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"); 
    } 
} 
Problemi correlati