python界面编程和网络_构建Mac和Windows图形用户界面应用程序

我计划为Mac和Windows构建一个GUI应用程序。我一直在做一些技术选择方面的研究,比如语言、库和构建工具,以便在两个平台之间尽可能多地共享代码。

主要要求是:满足Mac应用商店的要求。

Mac和Windows上的本地外观。

需要调用Mac上的Quartz窗口服务和Windows上的Windows API。

使用SQLite存储和读取数据。

我的文章篇幅已经失控,所以我把我的问题作为一个总结移到了顶部,而上下文则在下面。

问题为了便于编程,我倾向于使用Python。这是我的正确选择吗?如果不是,为什么C++会更好?如果是这样的话,我该如何设置py2app和pyobjc来编译python并构建一个独立的应用程序来为GUI加载XIBs呢?

我不应该为了更本机的界面而在Mac上使用跨平台GUI库,这对吗?或者使用QT或wxWidgets会更好吗?

如果我走错了路和/或有更好的解决方案我没有考虑,请指出:)

到目前为止我的研究和结论

GUI库

对于Mac,我排除了使用跨平台的图形用户界面库(如QT),因为它们似乎无法在Mac上提供本地的外观(看起来不合适和/或难以编写遵循苹果人机界面指南的应用程序)。wxWidgets说它使用本机库,但是这个post提到wxPython可能使用私有的Objective-C调用,不太可能被批准用于Mac应用商店。最后,即使外观正确,两个平台的布局可能仍需要改变。

因此,我计划在Mac界面上使用本地Cocoa GUI库,但仍在考虑在Windows GUI上使用wxWidgets。

语言

对于主要应用逻辑来说,我最好的语言选择是C++或Python。显然,用Python编写跨平台代码比C++更容易,但总是存在折衷。

Python

优点:编写更快,维护更容易。强大的跨平台库,可以大大缩短开发时间。

缺点:使用Python意味着使用PyObjC,它已经有一年多没有更新了(从svn可以看到),我不清楚它是否还能与Xcode和OSX的未来版本一起使用。另外,使用PyObjc和py2app设置任何正常的构建配置,并在Xcode之外为GUI使用xibs也是一个噩梦。

C++ >强>

优点:易于在Mac和Windows上设置生成配置和依赖项。运行速度比Python快得多,不过在我的例子中,性能并不是一个大问题。:EME>我不知道C++。我对C很好,但是它看起来不太好,我在编写好的C++方面有很大的帮助。我有一个普遍的印象,写跨平台的C++要困难得多,但我可能错了。有很多关于隐秘的bug的帖子。不过,Boost看起来很有希望。

构建工具

如果使用C++作为主要语言,设置两个平台似乎很简单。如果我使用Python,在Windows上设置似乎也很简单,因为我将使用wxWidgets来部署GUI和py2exe。

至于Mac和Python,标准的选择似乎是pyobjc和py2app。不幸的是,我还没有找到任何使用py2app的构建配置示例,该构建配置使用XIBs和Cocoa库,而不是QT或wxWidgets。我不希望Xcode管理构建,因为我希望Python文件和应用程序资源放在

Xcode项目目录。这将大大简化Windows和把文件树弄干净。

关于QT的编辑:我又看了一眼QT,花了几个小时和QT设计器一起玩。基本的UI元素(button、textfield、label)看起来与Cocoa元素相同。我把一个QWindow和一个QTabView简单地组合在一起,它看起来像一个Cocoa应用程序。不过,也有一些负面因素:行为有点偏离,比如缺乏弹性滚动,QTextEdit没有蓝色阴影表示焦点。

QTableView看起来不像它的Cocoa版本。

元素之间的间距,到父视图的间距,不遵循准则。通过调整布局,它基本上是可以修复的,但是需要在任何地方都做,我会免费使用Xcode。

缺少用于生成检查器的HUD元素。这是我很可能需要在我的应用程序,至少在Mac方面。

无障碍支持。

我知道我很挑剔,但要想成为一个好的用户界面,我必须很挑剔。总体来说,QT似乎是Windows的一个很好的解决方案,但我认为我将坚持使用Cocoa for Mac。我对现有程序做了一些额外的研究,发现VLC、Chrome和Transmission都为Mac制作了本地gui,而VLC使用QT作为Windows,Chrome使用自定义框架,Transmission使用GTK+和QT作为Linux。

我想我已经决定使用COMGUI来为Windows和Windows的QT或WxWIDGET使用,但是仍然在C++和Python之间分配共享逻辑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值