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有什么特别的地方让它不适合你吗?