[TOC] 以下内容在未标注时,同时对linux和Windows成立。
tkinter
界面较为简单,或者难度较大但是要求跨平台的时候可以考虑选用tkinter。
原因:
跨平台性好
linux\OSX\Windows都可以,甚至也支持龙芯、树莓派等非X86的CPU。
对于内置控件,操作逻辑简单
比如Text控件(多行文本编辑),自定义了各种功能键的响应。而wxpython的TextCtrl在linux下需要自行定义多种功能键,否则可能会在按到未定义的功能键的时候崩溃。
环境搭建方便。
在linux下搭建环境非常简单,一行命令搞定;Windows下干脆就是自带界面库。运用ttk控件无需设置样式即可适应平台的默认控件风格。
性能好
在使用pyinstaller打包的条件下,tkinter的性能不错,一般人并不能感觉出与C++写的界面的性能差别。而且相比其他图形界面库,实现同样的功能依赖的类库很小,不像PyQt打包后往往几十M起步。tkinter打包一些简单小工具可以控制在十几M.
限制条件:
图形化编辑器的易用性不如其他界面库;
不够直观。
很多控件都没有默认的库,需要自己写。
比如,内置的选项卡控件不带有关闭标签页的功能;没有内置工具栏控件,需要自己写工具栏等。
界面设计逻辑,尤其是布局,与其他系统差异较大。
tkinter基于的tcl/tk,这个界面库的创建时间比Qt(PyQt或者PySide的基础)、WxWidgets(wxpython的基础)早几年,但这几年正是图形界面飞速发展的几年,这个提前量也就意味着这个系统存在更多的历史遗留问题,它的布局系统pack、grid相比Qt中的Layout、Wx中的sizer来讲,理解难度较大,也与认知差距较大,学习起来相对不方便。
对一些第三方库支持不够好
如果想将一些以Opengl、三维视图等等为代表的库嵌入到tkinter界面中,你就会发现没有相应的绑定功能。如果一定要这么做,请改用PyQt/PySide或者说是wxPython等。 我尝试过在Windows、Linux平台上支持tkinter的库(主要是在显示和绘图方面)有:
Matplotlib
科学计算绘图
cefpython
浏览器模块。如果要做“图形界面+浏览器”并且不愿意学习electron等等技术的话,用tkinter界面承载浏览器是最合适的,因为除了浏览器之外的部分体积非常小。
Pyopengltk
tkinter的第三方Opengl绑定——但是这个库不太稳定。
wxpython
界面较为复杂时可以考虑wxpython。tkinter的一切缺点,wxpython基本都可以克服。当然,也有不少缺点
优点
平台兼容性好
以Sciwx/ImagePy项目为例,这个项目兼容Windows/Linux/OSX,并且已经成功的移植到了龙芯处理器的deepin系统上。
支持第三方库多
前述的有关tkinter支持的第三方库,wxpython都是支持的。除此之外,它对Vispy、VTK、PyOpengl、Moderngl等等库的支持非常非常优秀。要开发与可视化相关软件,可以考虑wxpython。
缺点
linux安装麻烦
Windows上相对简单;而在Linux平台上安装需要很大的耐心,可以尝试新建一个全新的conda环境再用pip安装,这样成功率会高一些。
PyQt的以后再更...先去复习考研了。