代码之家  ›  专栏  ›  技术社区  ›  balki

如何编写一个桌面应用程序,使用HTML和CSS进行用户界面和Python/Perl/C++/Java的处理?

  •  11
  • balki  · 技术社区  · 14 年前

    不同的语言有不同的图形用户界面工具包,但是看起来很难做到最好的用户界面,我们可以用更少的努力使用HTML和CSS。 我不会用JavaScript来做我的应用程序,因为我怀疑它是否有所有必需的库,我想用Python来做。

    如何在python中使用呈现引擎,如gecko、webkit等?哪一个更适合与Python一起工作?。是否有没有没有没有没有javascript的“only html/css”呈现引擎?

    在python中为dom事件编写事件处理程序和操作dom是否容易?

    10 回复  |  直到 9 年前
        1
  •  0
  •   naugtur    9 年前

    更新:这是一个古老的答案,现在你想在你的应用程序中使用一个嵌入式浏览器(*webkit projects等),但是在写作的时候,没有这样的技术存在。不过,如果您不想在打包的应用程序中添加相当多的兆字节,那么答案仍然有效。


    找到一个轻量级的服务器,或者更好的服务器- 嵌入 一个在您的应用程序中。就这样。

    Java具有用于服务HTTP的类。巨蟒也做得很好。

    看看Mercurial的Hg发球如何。[蟒蛇]

    我曾经做过一个小应用程序,它通过HTTP在HypRestQuess类上通过HTTP在本地主机上提供ASPELL SPELLECK。[在Win和Linux上工作]

    将应用程序创建为一个输出一些HTML并使用Post来执行操作的服务器。在HTML+CSS+JS中执行接口操作。又好又容易。

    运行后,用户指向localhost:somesilyport或触发在浏览器中打开localhost:somesilyport。

        2
  •  1
  •   Randy the Dev    14 年前

    有几种方法可以解决这个问题:最简单的方法可能是使用 Adobe AIR 它基本上是一个WebKit呈现引擎,带有一个扩展的JavaScript引擎,允许您在更复杂的功能中编程。

    否则,您可以查看 wxWebConnect 该项目旨在使“开发人员能够快速将高级Web浏览器功能集成到自己的应用程序中”,并作为WXWidgets控制库提供,这是大多数Python开发人员应该熟悉的。它将MozillaGecko渲染引擎集成到您的应用程序中。

        3
  •  1
  •   Ivo van der Wijk    14 年前

    Remote Control Toolkit 基本上就是这样。它允许您编写在浏览器显示中呈现的桌面(编程)样式的应用程序。

    即使它试图为您隐藏HTML/CSS/JS细节,您也可以使用新的小部件扩展系统,或者扩展现有的小部件,基本上使用HTML(5)、CSS、JS提供的所有功能。

    与睡衣或GWT不同,它不编译为JavaScript。您的代码仍然是服务器端的,基本上可以做任何您习惯做的事情(打开文件、打开连接、保持状态等)

        4
  •  1
  •   Steven    14 年前

    补充其他人已经给出的选择:

    一些WebKit绑定:

    至于gecko/mozilla,您可以看看pyxpcom,可能通过 pyxpcomext . 这里的区别——如果我理解正确的话——是不是从Python中使用Mozilla,而是Python嵌入到Mozilla中。但是应该可以创建一个可以使用Python的xulrunner应用程序。

        5
  •  1
  •   Kyle    14 年前

    你应该看看Mozilla的 XUL project . 它允许您使用HTML轻松构建应用程序,并使用实际的CSS“设计”GUI。

        6
  •  0
  •   Steve Perkins    14 年前

    如果你特别询问一种后端语言,我会把这个回答作为一个评论而不是一个完整的问题。然而,这个问题非常广泛……询问在其中一个 后端语言。

    在这种情况下,您只需在以下网站上进行一系列搜索:

    "html renderer" [insert-language-here]

    …并花一些时间浏览各种可用于将HTML/CSS界面嵌入后端语言应用程序的选项。

    最终,你很可能会使用Mozilla的Gecko渲染器…或者以其原始形式,或者间接地通过许多库中的一个库提供对开发人员友好的包装。

    说到Mozilla技术,您可能还想查看xulrunner(让您可以轻松地将使用XML和CSS和javascript的UI组合在一起),或者甚至可以查看prism(将运行在HTTP服务器上的应用程序作为桌面应用程序呈现给用户)。

        7
  •  0
  •   biera    12 年前

    如果你用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
  •  0
  •   elangovv    12 年前

    如果您要将其移植到Windows,我强烈推荐 HTMLLayout

    1. 它们允许您在HTML和CSS中编写UI,并且可以在C++中处理代码。
    2. 它还允许您在TI脚本(如Java脚本)中编写验证脚本,以便在处理之前验证输入。
    3. 二进制文件的大小略低于1MB,因此您可以轻松地将其与二进制文件一起打包。
    4. 它是开源/免费使用的。
    5. 它还允许您执行基于tiscript/css的动画。

    据我所知,它最适合在Windows上开发GUI应用程序。

        9
  •  0
  •   c-smile    10 年前

    检查 Sciter 它被设计成完全可嵌入的HTML/CSS/脚本引擎,用作桌面应用程序的UI层。

    你也可以找到 Sciter technology introduction 关于代码项目的文章很有用。

    Sciter包含 TIScript 在板上,它几乎是“python,但带有javascript语法”。

        10
  •  0
  •   Vladimir    10 年前

    您可以将Web浏览器组件嵌入到JavaSwing /JavaFX桌面应用程序中,该应用程序显示用HTML5+CSS+JavaScript构建的GUI。您可以在中看到一篇描述如何执行此操作的文章 http://java.dzone.com/articles/htmlcssjavascript-gui-java-0

    允许将铬嵌入到Java应用程序中的JavaSwing/JavaFX库之一 JxBrowser . 使用jxbrowser api,您可以加载任何网页,并使用其dom和javascript。您甚至可以从JavaScript代码调用Java方法,反之亦然。例如:

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