Python GUI编程之Python GUI库综述


Python GUI编程之Python GUI库综述文章插图
前言本文介绍利用Python开发GUI应用程序时几种常见的跨平台Python GUI库 。
注:本文基本开发环境配置为:
- Window7(64位)
- Python 3.8.5
- 以及各类Python GUI库
本次分享内容的目录如下:
前言
基本概念(CLI、GUI、GUI库、Python GUI库)
基于Tk的Tkinter(简介、特点、应用、简单示例)
基于wxWidgets的wxPython(简介、特点、应用、安装、示例)
基于Qt的PyQt(简介、特点、应用、安装、示例)
基于Qt的PySide2(Qt for Python)(简介、特点、应用、安装、示例)
基于GObject的PyGObject(简介、特点、应用、安装、示例)
结束语
1. 基本概念在文章开始 , 我们先来理清几个重要概念:
1.1 CLI(命令行界面)CLI 是 Command-Line Interface 的英文简称 , 中文意思为命令行界面(或命令行接口) , 是指用户通过键盘方式来显示计算机操作界面(接口) 。 用户通过键盘输入指令 , 计算机接收到指令后 , 予以执行 , 并在显示器上输出相关信息 。
下面是 Windows 系统上一个典型的 CLI 程序 (Windows PowerShell) 运行时的示意图:
Python GUI编程之Python GUI库综述文章插图
在1973年以前 , 用户都是通过命令行界面(CLI)方式显示计算机操作界面的 。 命令行界面的程序通常需要用户记忆操作的命令 。
1.2 GUI(图形用户界面)GUI 是 Graphical User Interface 的英文简称 , 中文意思为图形用户界面(或图形用户接口) , 是指采用图形方式显示的计算机操作用户界面 , 是一种人与计算机通信的界面交互方式 。
在 GUI(图形用户界面)中 , 用户看到和操作的都是图形对象(计算机屏幕上显示窗口、菜单、图标、按钮、对话框等) , 用户通过鼠标等输入设备进行操纵 , 以完成不同的动作目的(如运行程序、打开文件等) 。
下面是类Unix系统 X Window System上 GUI 之一的 KDE Plasma Desktop 运行时的示意图:
Python GUI编程之Python GUI库综述文章插图
与早期计算机使用的命令行界面相比 , 图形界面对于用户来说在视觉上更易于接受 , 学习成本大幅下降 , 也让计算机的大众化得以实现 。
不过由于命令行界面要较图形用户界面节约计算机系统的资源 , 在熟记命令的前提下 , 使用命令行界面往往要较使用图形用户界面的操作速度要快 , 所以在现在的图形用户界面的操作系统中 , 通常都保留着可选的命令行界面 。
1.3 GUI库GUI 库也称部件工具箱(Widget Toolkits) , 是指在程序设计时某些基本的GUI的组件元素的集合 。 它们一般以库或者应用程序框架的形式出现 。
GUI 库包含一组部件(Widget) , 部件是一系列图形控制元素的集合(如:按钮、标签、文本框等) 。 在构建GUI程序时 , 通常使用层叠方式 , 众多图形控制元素直接叠加起来 。
GUI 库分为偏底层的GUI库更高级的GUI库
常见的偏底层的GUI库有:

  • WIndows API
  • X Window System 中包含了许多基本的部件 , 但通常需要通过Motif、GTK+或者Qt来使用
常见的更高级的GUI库有:
  • Windows平台:
    • MFC(Microsoft Foundation Classes):是Windows API的封装 。
    • Windows Forms:.NET的库类集 , 可进行GUI控制 。
  • 跨平台(基于C或者C++ , 也经常与其他编程语言绑定):
    • Tk , Tcl 以及其他高级脚本语言用到的工具集(在Python中的接口是Tkinter)
    • GTK+ :主要针对X Window System , 用于GNOME桌面环境 。
    • Qt:可用于Unix/Linux(X Window)、MS Windows、Mac OS X、Windows CE以及Embedded Linux , 用于KDE桌面环境 。
    • wxWidgets(以前是wxWindows):针对C++、Python以及Perl的跨平台工具集 。
    • FLTK:跨平台工具集 , 特点是小而快 。
  • 跨平台(基于Java)
    • AWT(Abstract Windowing Toolkit):用于Java程序 , 通常在选定的平台下运行另一个工具集 。
    • SWing:AWT的替代品 。
    • SWT(Standard Widget Toolkit):Java的本地部件工具集 , 是Eclipse项目的一部分 。 SWT运行相应平台下的部件工具集(如Windows API , 或者GTK+) 。
1.4 Python GUI库当我们使用Python语言编写GUI应用程序时 , 一般不会自己从最底层去实现 , 通常会使用更高层次的Python GUI库来完成 。
由于Python的广泛流行 , 目前有众多优秀的 Python GUI库可供开发者选择 , 如:基于Qt的PyQt5、基于Qt的Qt for Python(PySide2)、基于wxWidgets的wxPython、基于Tk的Tkinter、基于GObject的PyGObject等 。