Python|如何快速简单开发跨平台桌面应用程序(适配麒麟系统+armv8)

Python|如何快速简单开发跨平台桌面应用程序(适配麒麟系统+armv8)

文章图片

Python|如何快速简单开发跨平台桌面应用程序(适配麒麟系统+armv8)

文章图片

Python|如何快速简单开发跨平台桌面应用程序(适配麒麟系统+armv8)

文章图片

Python|如何快速简单开发跨平台桌面应用程序(适配麒麟系统+armv8)

因公司有国产化(主要兼容麒麟操作系统+armV8架构的处理器)的项目的需求 , 为桌面应用程序 , 根据公司资源情况 , 在技术层面进行了一些选型调研 。
一般来说 , 开发语言本身都是有跨平台能力的 , 比如java(jvm) , c#(.net core) , python(python解释器) , c++等等 , 所以要调研选型的方向主要是gui的跨平台能力 。

框架
语言
界面语言
性能
开发成本
文档
Qt
C++ , python等
Qml => xml



Eto
C#
1. Xaml => xml
2. Code => C#
3. Json => Json
一般
一般

Electron
nodejs
vue , html等
较差
一般
较多
Cef
java , python等
html , vue , js等

较高
较少
如上所示:
如果对性能没什么要求 , 而且要界面绚丽 , 能加载html , 与底层交互少 , 那么electron为最佳选择 , 而且electron开发简单 , 上手快;
如果单纯要求性能 , 那就是c++和qt了;
如果对性能要求不是很高 , 而且又要兼顾成本 , 还是建议eto+c# 。 虽然eto的资料不是很多 , 但有官方demo和基于eto的一些开源项目 , 自己跑一下 , 学习一下发现还是很简单的 , 业务逻辑使用c# , 快速开发也不会有什么坑;
至于最后一种方案cef , 这个是基于google的开源浏览器内核项目cef , 业务端语言可以是python、java、c#、go语言等 , 界面交互直接用html+js方案 , 实现了开发C/S程序的前后端分离 , 前端调用业务端使用jsbridge方式 , 业务端渲染界面使用websocket , 保证实时高效 。
根据公司资源情况 , 我选择了c#+eto技术方案 。
eto的github地址:
https://github.com/picoe/Eto , 学习一下demo部分足够上手开发了 。
根据官方描述:此框架(Eto)可用于使用本地工具包(native toolkit)和简单的API构建跨多个平台运行的应用程序 , 说白了就是eto支持多种GUI渲染 。 基于此 , 我选用gtk作为gui库 。

图1 Eto Demo示例
Windows下Eto+C#开发环境的搭建:
1.安装GTK3 。
https://www.gtk.org/docs/installations/windows/ , 我这里使用了 MSYS2方式 安装 , 简单快速;