我们要开发的是一个带有GUI的应用程序。软件基本要求包括:
-
具有良好的GUI界面。 -
具备图形显示功能。前处理的网格和后处理数据显示都需要软件具备一定的图形显示功能。 -
具备跨平台能力。希望软件能够同时在Windows和Linux下运行。 -
若使用第三方开源库,希望使用的库采用的是更宽松的开源协议。
对于GUI应用程序来讲,目前可以选择的开发环境很多。根据不同的编程语言,常用的GUI开发环境有:
-
C++
典型代表为 Qt。微软有提供一些C++桌面程序框架(如MFC),不过主要面向Windows系统,而且近些年日渐式微。目前涉及到利用C++开发桌面应用程序,Qt 几乎成了唯一的选择。
-
Python
基于Python的GUI框架非常的多(如PyQt、PySide、Tkinter、wxPython等),不过大型应用程序开发一般都会选择PyQt或PySide。PyQt和PySide都是Qt的python绑定,用起来区别不大,不过PySide是Qt官方出品,从开源协议来说,PyQt基于GPL,而PySide则是基于LGPL,PySide要更宽松一些。
-
.Net
开发Windows应用程序的首选,编程语言可以选择使用C#或VB.NET,建议使用C#。早期的时候.Net程序只能在Windows下使用,不过这些年微软在跨平台方面做了不少的工作,.NET目前也可以支持跨平台开发了。
-
JavaScript
典型框架为Electron,这是一个基于JavaScript、HTML及CSS 等web技术的框架,个人觉得Electron比较适合开发一些轻量级的应用,不太适合开发计算密集型的程序。
鉴于CFD软件的功能需求,个人觉得最合适的是使用基于C++的Qt进行开发,首先性能上有保证,非常适合前后处理这种计算密集型的功能需求,其次Qt的学习资源也较为丰富。不过我很久没有使用Qt了(还是在十几年前上学的时候用过一阵子),基本都忘光了。
用C#做界面倒是很爽,而且这些年一直有在用,不过C#开发图形显示比较麻烦,目前自己做的一些C#图形显示库也不方便开放出来。只能作罢。
JavaScript不熟,也懒得去学习,略过。
本次开发选择使用PySide6
,其使用Python作为开发语言,GUI采用的是Qt,文档资料啥的都比较齐全,加上之前有用PyQt5开发软件的经验,虽然时间久了点儿,但Python这些年一直也都在使用,重新捡起来应该不难。Python做图形显示,对于大规模几何和网格的显示存在明细的性能不足,不过后期若真存在此类问题,到时候再考虑把图形显示模块用C++重新开发,然后在主界面中进行调用,应该能缓解一下。
(未完待续)

本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册