关于c#:是否有支持嵌入HTML页面的跨操作系统GUI框架?

Is there a cross-OS GUI framework that supports embedding HTML pages?

我想开发一个跨系统使用的桌面应用程序(win,mac,linux),有没有一个GUI框架允许我为所有3个平台编写一次代码,并有一个完全可编写脚本的嵌入式Web组件?

我需要它有一个API来在应用程序和网页javascript之间进行通信。

我知道C,javascript和一些Python。


还有Tidesdk,正式名称为钛。这提供了一个webkit html/javascript小部件,它可以满足您的所有需求,包括运行chrome开发人员工具。好的。

编辑如下。用来自tidesdk开发人员的反馈整合我的更新:好的。

Tidesdk,前身为Titanium桌面,是一个开源软件开发工具包,用于使用HTML5、CSS3、JavaScript和其他常用脚本语言创建多平台桌面应用程序。该项目托管在Github上。主网站有全面的文档,并且拥有一个活跃的开发人员社区。数千名开发人员使用以前的Titanium桌面来开发Deskop应用程序。也许最被认可的应用程序是wunderlist好的。

tidesdk允许您使用Web开发技能创建桌面应用程序,并提供各种特权API。您可以使用Python、PHP或Ruby中的成熟库轻松扩展应用程序的功能。好的。

tidesdk的核心是一个编译到WebKit组件中的对象桥。桥允许其他脚本语言(python、php或ruby)使用dom中的脚本标记在HTML页面上运行,就像javascript一样。也可以从应用程序中直接调用.py、.rb或.php文件。好的。

tidesdk只能与基本的文本编辑器一起使用,它不需要任何特殊的工具或IDE,尽管许多开发人员更喜欢更丰富的工具。tidesdk包括用于本地运行应用程序(用于开发和调试)的命令行工具,还可以将其打包到正在开发的操作系统的安装程序中(支持Windows、Mac OSX和Linux)。为了获得所有需要的安装程序,典型的tidesdk开发环境将为每个操作系统包括一个物理或虚拟机。Tidesdk团队希望尽快采用一种不同且更好的方法。好的。

Tidesdk团队目前正在开发Tidesdk Builder应用程序。它将提供一个用于创建、运行和打包TidesDK应用程序的GUI。为了更快地启动开发人员,TidesdkBuilder引入了一个新功能——脚手架。脚手架生成所有的锅炉板来实例化具有特定开发模式的项目,例如主干MVC。开发人员可以使用TidesdkBuilder创建、导入和共享脚手架。好的。

Tidesdk的路线图包括1.4版的CommonJS实现,旨在为开发人员提供使用JavaScript的更模块化的开发体验。好的。你好世界

tidesdk项目由一些样板代码和包含核心项目文件的资源文件夹组成。下面说明了一个简单的hello world应用程序的结构,该应用程序将在所有支持的plaform上运行:好的。

1
2
3
4
5
6
7
8
9
├── CHANGELOG.txt
├── LICENSE.txt
├── README.md
├── Resources
│   ├── app.js
│   ├── default_app_logo.png
│   └── index.html
├── manifest
└── tiapp.xml

清单包含有关项目使用的运行时模块的信息。tiapp.xml提供配置,默认的_app_logo.png是默认情况下会显示在Dock、系统托盘或应用程序窗口中的图像。好的。

下面是hello world示例的app.js文件的内容(如将在tidesdk 1.3.0中显示的那样)。以前的版本将使用已经停止使用的钛名称空间。好的。

1
2
3
4
5
6
7
8
9
10
11
// create and set menu
var menu = Ti.UI.createMenu(),
fileItem = Ti.UI.createMenuItem('File'),
exitItem = fileItem.addItem('Exit', function() {
  if (confirm('Are you sure you want to quit?')) {
    Ti.App.exit();
  }
});

menu.appendItem(fileItem);
Ti.UI.setMenu(menu);

这是同一个应用程序的HTML。它调用上面的脚本。好的。

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
  Hello World
  <style type="text/css">
    body {background: #fff;}
  </style>
</head>
<body>
  Hello World
  <script type="text/javascript" src="app.js">
</body>
</html>

在不到10行的javascript代码中,我们创建一个菜单,添加"文件"和"退出"菜单项,并将其设置为主窗口。一个简单的回调方法用于弹出一个退出确认对话框。如果用户确认,应用程序将退出。好的。背景

钛由Appcelerator开发,并根据Apache2许可证提供。最初Appcelerator提供了开源的Titanium开发人员来创建项目。后来Appcelerator推出了封闭源代码的Titanium Studio,它是Aptana之上的一个IDE。虽然目前仍有可能在Titanium Studio中开发tidesdk,但将来可能需要一个插件。[安德鲁:对不起,我不清楚。钛工作室的插件?还是阿帕塔?还是TIDEDK?]好的。

Appcelerator提供了一个Tistudio SDK,可以帮助我们创建Tistudio的插件,以便通过Tistudio使用Tidesdk。好的。好啊。


如前所述,tidesdk(http://www.tidesdk.org/)是一种选择(目前对我来说更好)你也可以使用同样的想法:xul runner(https://developer.mozilla.org/en-us/docs/xulrunner)、adobe air(http://www.adobe.com/devnet/air/air-sdk-download.html)(此处:http://www.adobe.com/devnet/air.html是除了flash和dreamweaver、appjs(http://appjs.org/)或node qt(https://github.co)之外的"如何"教程。m/arturadib/节点qt)随着CEF(http://code.google.com/p/chromiumembedded/),Berkelium(http://berkelium.org/)和Awsomium(http://awesomium.com)的工作越来越多,或者如何在GUI应用程序中嵌入Firefox?这说明了如何在应用程序中嵌入gecko(firefox的引擎)。

好吧,现在我的意见是:第一个选项将为您提供更好的方式,因为它们基本上是一个跨平台工作的"浏览器",您将部署一个HTML+JS+CSS应用程序(使用air,您也可以部署Flash/Action脚本应用程序);其他选项您必须构建一个应用程序,然后将"浏览器"放在其中,它提供了更多的灵活性,但可能b适得其反。

我的经验是:tidesdk-很好而且稳定,但是还在增长,因此一些高级功能可能会丢失,但是您可以编译它,开发团队非常活跃。

Xulrunner-稳定,不可能做复杂的事情,你需要一个良好的C知识来制作你自己的组件,因为它只提供你基本的东西。它在你能做的事情上是非常灵活的,但是它有一个僵硬的内容结构,除非它以这样的方式组织,否则你的应用程序就不会运行,在我看来(LOL)有一个丑陋的语法,它是Java和JavaScript编程风格的混合体。

Adobe Air-易于使用和部署,但它是Flash,让我对未经优化的东西有一种奇怪的瘙痒感。

应用程序-是nodejs,这个例子很有效,我无法让我的自定义应用程序运行,我认为它还没有完善,它以一种奇怪的方式为我工作。

nodeqt-是qt+nodejs,您需要编译自己的qt版本,我还没有测试过,但是部署起来很简单

其他的嵌入方式-还没有测试过,看起来很好,但我不知道,可能是无济于事。


qt与qwebview有着这样的关系。


使用铬嵌入框架怎么样?

它是开源的(BSD许可证),并附带C、C++、.NET(1或2)、Java、Delphi和Python的绑定。

这个.NET绑定也与Mono完全兼容,这将有助于创建跨平台的应用程序。

注意:另一个答案中提到的AppJS是在CEF之上构建的(使用node.js)。


我要把这个扔掉:

应用程序:http://appjs.org/


WXWIDGET也。

PS:qt让我对跨平台的GUI更感兴趣。


  • 奇怪的是qt不适合你。听到Sencha的架构师和动画师产品使用qt和qwebview进行跨平台的javascript应用程序时,您可能会感到惊讶,因为它们具有完整的菜单和图标、可执行文件、系统对话框和文件I/O。

    它目前适用于Windows、OSX和Linux。

    他们使用内部开发的名为ion的库来加载和交互JavaScript应用程序。它们提供一些帮助程序类供JS使用。

    一个简单的框架C++应用程序,它使用Qt来创建和加载窗口并在该窗口中创建Web视图,并将HTML和其他内容从文件加载到该视图中。

  • 另一个解决方案是adobe的air,它就像一个具有本机支持的浏览器。它还提供部署。


  • Mono和WinForms怎么了


    因为我的第一个答案是wxwidgets,你觉得qt不适合你……您没有提到javascript——注意pyqt"为qt 2和qt 3提供绑定"。Pyside是诺基亚针对Qt的官方python绑定。"pyqt vs pyside"搜索提供了有趣的结果:

    • 关于so:https://stackoverflow.com/questions/1297660/pyside-vs-pyqt
    • 一些技术差异
    • Pyqt与Pyside比较
    • Pyqt或Pyside-使用哪个

    还有Python,但我一点也没查过。

    FYI

    • Qt网络示例
    • Qt WebKit示例:


      Qt provides an integrated Web browser component based on WebKit, the popular open source browser engine.

      These examples and demonstrations show a range of different uses for WebKit, from displaying Web pages within a Qt user interface to an implementation of a basic function Web browser.

    • qt还支持c#
    • 以及许多其他语言。
    • kde(Linux桌面环境)使用和开发qt

    Qt有什么特别的地方让它不适合你吗?