使用Python开发跨平台GUI应用的最佳配置
我已经使用REALbasic
好几年了,主要是为了开发跨平台的应用程序。不过,使用这种专有语言让我感到很沮丧,所以我决定换一种语言,最终选择了Python
和QT
。
因为我对Python完全不熟悉,大家觉得我应该选择Python 2还是3呢?
我打算使用PyQt
或PySide
这两个库。我知道这两者中,只有PyQt(目前)支持Python 3。这是不是意味着PyQt比PySide更有优势呢?不过我觉得PySide的语法看起来更简洁一些。
3 个回答
关于“Python2还是Python3?”这个问题,我建议你看看这篇文章,它在Python的维基上。文章不仅详细回答了你可能会有的主要问题,还提供了很多有用的链接。
至于“PyQt还是PySide?”从纯编码的角度来看,它们之间的区别非常小,尤其是对初学者来说(详细信息可以查看这篇文章)。PyQt和PySide之间唯一显著的区别是它们的许可证(GPL和LGPL)。
PyQt是一个比PySide更成熟的项目,在与Qt和Python版本的兼容性方面也更灵活。PyQt依赖的Sip包还允许你在运行时微调不同API版本的使用(详细信息请查看这里)。
总体来说,短期内“最安全”的选择可能是PyQt加Python2。关于PyQt的代码比PySide多得多,关于Python2的代码也比Python3多,而且这种情况可能会持续一段时间。因此,作为初学者,从这个组合开始是没有坏处的,因为(不考虑许可证问题)如果以后需要切换,过程相对简单。
PyQt和PySide基本上是一样的,主要的区别在于它们的授权方式。PyQt是GPL授权,这意味着如果你想卖一个应用,就需要购买商业许可证。而PySide则是LGPL授权,这样你就可以在不买许可证的情况下出售你的代码。好处是,你只需要更改一下导入的部分,就可以出售了。:) 另外,PySide只支持2.x版本,而PyQt则支持两个版本。
“PySide的语法似乎更‘干净’。”
PyQt在2.x版本中使用的是api 1(可以通过sip.setapi(2, 'item')
切换到api 2),而在3.x版本中使用的是api 2。切换到api 2后,语法就和PySide以及PyQt的3.x版本一样了。
关于api 1和api 2之间区别的好文章可以在PSEP 101找到。
“因为我对Python一无所知,大家会推荐使用Python 2还是3?”
你更可能会使用Python 2,因为很多模块和库还没有切换到Python 3,毕竟Python 3和Python 2之间不兼容(从2008年Py3k发布到现在已经过去3年了!)。
根据你的具体情况,选择最适合你的版本。有些人更喜欢PyQt,因为它存在的时间更长,项目更成熟,可能会更稳定。不过,我自己用PySide也没遇到过什么问题,所以用它也没问题。
PySide和PyQt4几乎是一样的。实际上,你在代码中可以经常把PyQt4
换成PySide
(反之亦然)来导入。
Python2和Python3也差不多,只有一些小变化,初学者一开始可能不会注意到(除了print
变成了一个函数)。
Python2在模块支持方面更多(因为Python3和Python2不兼容),所以我建议你先用Python2,直到你找到切换到Python3的理由。其实没有什么好处,因为这两个版本是分开维护的。
总之,还是用那些已经被证明有效的东西吧。