知道脚本和人机交互后,学习哪个GUI框架好?
我对人机交互有一些了解,也会写一些基础的编程脚本(Python),这些脚本可以从头到尾运行,自动化我想做的任务或计算。过去我用HTML和PHP搭建过一些界面。
我希望我的Python脚本能够从命令行发展出来,制作一些带有图形用户界面(GUI)的应用程序,这样用户就可以拖放文件,点击按钮来启动操作,并以图形方式查看进度。
因为我用Python写脚本,所以我查看了一些选项(Tkinter、wxPython、PyQt),但我还没法决定选哪个来投入时间学习。我的标准是:
- 有针对程序员的GUI入门介绍(比如与脚本的区别,简单界面的示例)
- 一个可以让我在我最常用的平台(Windows)上运行程序的框架,同时也能在Mac和可能的Linux上运行,修改不需要太多。
- 学习曲线很平缓(容易制作第一个界面),但后期又能灵活定制界面,比如按钮的颜色、大小和形状等。
- 如果不是完全一样,最好与Android和/或诺基亚智能手机的GUI编程相似。我计划在不久的将来为这些平台编写一些程序,所以如果可能的话,我希望能把这里的一些经验带到那些平台上。
我找到过这个之前的问题,但没有一个答案让我满意。
这些框架中有没有哪个更符合我的要求,还是它们基本上都差不多,我用哪个都可以?
备注:如果你觉得我应该考虑其他语言而不是Python来实现这个目标,那是哪种?我真的很喜欢Python的空白语法,并且已经习惯了,所以我更倾向于继续使用它。
3 个回答
我猜你是在找Glade。
这个网站上说:
Glade是一个快速应用开发工具,可以让你轻松快速地为GTK+工具包和GNOME桌面环境开发用户界面。
在Glade中设计的用户界面会保存为XML格式,应用程序可以通过使用GtkBuilder这个GTK+对象动态加载这些界面,按需使用。
通过使用GtkBuilder,Glade生成的XML文件可以在多种编程语言中使用,包括C、C++、C#、Vala、Java、Perl、Python等。
我还是个新手程序员,不过在用C和Glade入门时遇到了一些小问题。所以我想你在这里用你的蛇(指Python)会很顺利。可以看看。
PyGTK 至少满足前面提到的三个要点。至于第四个要点,我就不太确定了。这里有一个很不错的教程,可以参考一下: http://www.pygtk.org/pygtk2tutorial/index.html
PyQt 和非常相似的由诺基亚赞助的 PySide(它的许可证更宽松,使用 LGPL 而不是 GPL,但底层工具包都是 Qt)有一个好处,就是它们和诺基亚手机的图形界面工具包很相似(这是你提到的第四点)。诺基亚之所以收购了 Trolltech,就是因为 Qt 是他们手机产品的基本图形界面工具包。
你提到的所有工具包都能满足你关于操作系统(Windows、Mac、Linux)的要求,这是你提到的第二点。
你提到的第一点和在某种程度上的第三点,很大程度上取决于你能找到的学习材料。就我个人而言,我觉得 wxPython 的教程(我推荐的是新的 wiki 形式的教程)非常不错,而 PyQt 的教程也还可以;不过 PySide 的文档里没有好的教程(我所知道的),我认为 PySide 的意图是让你先学习 PyQt(因为有合理的学习材料),然后再把这些 小差异 应用到 PySide 的编程中去;-)。而 Tkinter 的教程要么非常老旧,要么专注于底层工具包的多语言特性,这让我觉得它们不太好。
如果你能买一本书,PyQt 有一本不错的书(同样适用于 PySide)——不过 这本优秀且免费的书 不幸的是非常老旧,所以我觉得帮助不大。wxPython 自己的书 也相当不错;而 Tkinter 的书,再次强调,已经过时了。
就我个人而言,我推荐 PyQt / PySide:整体实力 A+,入门简单(有上面的教程和书)A-,与诺基亚手机程序员的相似性 A。对于 wxPython,我会说实力 A,入门简单 A,与诺基亚的相似性 B。Tkinter 的过时教程和书籍是一个重要的负面因素。
你还提到了 Android,但我觉得没有任何东西能同时和 Android 以及诺基亚手机的图形界面编程相似。也许我对 Android 图形界面编程不够熟悉,但在我看来,它和你提到的每一个工具包都有所不同。