为什么Python发行版中的所有tk示例都是用TCL编写的?
别误会,我并不是特别喜欢Python,但当你在Python的文件夹里看到一个Tk的文件夹时,你自然会期待……嗯,Python。没错,我知道Tk是从TCL来的,但如果我必须用TCL来使用Tk,我肯定会忘记Tk的存在,直接用其他工具箱了。(这种组合的受欢迎程度我真是搞不懂。)
期待看到像Python这样相对易读的语言,结果却发现是TCL,就像突然看到你奶奶光着身子一样,视觉上真是让人受不了。
我对Python并没有特别热衷,但在一些简单的任务上,我不想用C或C++的时候会用它,或者如果我想快速处理一些文本的时候也会用。把TCL的例子放在Python的分发包里,简直就像是在开一个残酷的玩笑。
有没有类似的包,里面的例子是用Python写的呢?
编辑:我想这也引出了一个问题,Tk是否是Python中做图形界面开发的最佳选择呢?
3 个回答
TCL/TK是一种简单易懂的编程语言,用它开发应用程序非常简单,而且速度快,占用的资源和硬件要求也很少,可以在各种平台上运行。
在TCL/TK中,还有一些工具,比如starkits和freewrap,它们可以把库、代码和其他文件打包成一个文件,方便在不同平台上携带、运行和安装,不需要把所有的库都带上。
虽然TCL/TK的运行环境只需要3MB的空间,但Python需要的空间要多得多,而且还会使用很多不必要的库。
当这些应用程序变得复杂时,通常会先迁移到Python,并使用Tkinter来共享图形界面,之后可以转向其他更快的图形界面库,比如QT或Wxwidgets。
想要用Tkinter编程的人,必须了解TCL和TK的图形界面,因为Tkinter就是基于它们的。
现在没有其他图形界面库像Tkinter一样灵活,能够把所有功能放在一个文件里,让跨平台的应用程序保持小巧和模块化,适合所有基础的Python项目。
而且,Tkinter的体积只有2MB,而wxwidgets则有80MB。如果你想做一个计算器、记事本或绘图应用,你会希望有一个小巧的图形界面,方便集成到你的项目中。
此外,现在用Tkinter制作的应用在小型硬件设备上运行得更快更好,比如ARM、树莓派或智能手机,而wxwidgets则会变得很慢。
如果你的应用程序简单小巧,平台也不强大,选择Tkinter;但如果应用程序复杂且占用资源多,就选择wxwidgets或QT。
在Python的官方版本中没有Tcl的例子;你用的任何版本都可能是自己加上去的。
在我看来,Tk现在唯一真正的优势就是它和Python捆绑在一起,使用起来很方便。我曾因为在《Python in a Nutshell》中提到它而受到批评,但我依然支持这个决定,因为它毕竟还是“官方”的工具包。不过,如果你想要更好的选择,并且不介意花点时间去获取它(可能还要把它和你分发的应用捆绑在一起),那么还有其他很不错的选择。
PyQt(如果你能接受GPL许可证或者愿意为商业许可证付费)和wxPython在我看来是目前更优秀的跨平台图形界面应用选择(不过如果你想分发独立应用,就得花点功夫把它们和py2exe或PyInstaller捆绑在一起)。还有一些其他的包也很不错,如果你不在乎跨平台分发或者有特殊需求的话(例如pyui——虽然现在是一个通用的UI工具包——适合用在PyGame或PyOpenGL中的简单游戏界面)。