13.Python图形用户界面

我们之前的程序运行结果都被输出到命令提示符(终端)窗口,界 面比较简陋。本章讲解如何将其输出到图形界面。

1 Python中的图形用户界面开发库

注Qt是一个跨平台的C++应用程序开发框架,被广泛用于开发GUI 程序,也可用于开发非GUI程序。

1 Tkinter

Tkinter是Python官方提供的图形用户界面开发库,用于封装Tk GUI 工具包,跨平台。但是,Tkinter工具包所包含的控件较少,帮助文档不 健全,不便于我们开发复杂的图形用户界面。

2 PyQt

PyQt是非Python官方提供的图形用户界面开发库,用于封装Qt工具 包,跨平台。若想使用PyQt工具包,则需要额外安装软件包。

3 wxPython

wxPython是非Python官方提供的图形用户界面开发库,也跨平台。 它提供了丰富的控件,可用于开发复杂的图形用户界面。它的工具包帮 助文档很完善,案例也很丰富。

2 安装wxPython

在命令提示符(终端)窗口输入pip指令:

在Windows平台上通过pip指令安装wxPython,在命令提示符窗口输 入如下指令。

如果安装成功,则可以出现如下窗口。

3 第一个wxPython程序

图形用户界面主要是由窗口及窗口中的控件构成的,编写wxPython 程序其实主要是创建窗口和添加控件的过程。

若要构建一个最简单的wxPython程序,则至少需要一个应用(wx. App)对象和一个窗口(wx.Frame)对象。

示例代码如下:

4 自定义窗口类

3节的示例过于简单,我们可以自定义窗口(wx.Frame)类,以 便于扩展功能。 示例代码如下:

5 在窗口中添加控件

我们在窗口中添加两个控件:一个面板(Panel)和一个静态文本 (StaticText)。面板是一个没有标题栏的容器(可以容纳其他控件的控 件)。

示例代码如下:

6 事件处理

图形界面的控件要响应用户的操作,就必须添加事件处理机制。事 件处理的过程如下图所示。

其中涉及的主要内容如下。

1 事件源:事件发生的场所,就是各个控件,例如按钮事件的事件 源是按钮。

2 事件:wxPython中的事件被封装为事件类wx.Event及其子类,例 如按钮事件类是wx.CommandEvent,鼠标事件类是wx.MoveEvent。

3 事件处理程序:一个响应用户事件的方法。

下面通过一个示例介绍事件处理流程。在以下窗口中有一个按钮和 一个静态文本,在单击OK按钮时会改变静态文本显示的内容。

7 布局管理

wxPython提供了布局管理器类帮助实现界面布局,主要分为两大类 :盒子布局管理器和网格布局管理器。盒子布局类似于CSS中的弹性布 局,非常灵活,我们重点介绍盒子布局。

7.1 盒子布局管理器

盒子布局管理器类是wx.BoxSizer,Box布局管理器是最常用的布局 管理器,它可以让其中的子窗口(或控件)沿垂直或水平方向布局。

1 创建盒子布局管理器对象

我们使用wx.BoxSizer类创建盒子布局管理器对象,主要的构造方法 如下:

设置为水平方向布局,

设置为垂直方向布局

wx.HORIZONTAL是默认值,可以省略

2 添加子窗口(或控件)到父窗口

我们使用wx.BoxSizer对象的Add()方法添加子窗口(或控件)到 父窗口,对Add()方法的语法说明如下:

7.2 动动手——重构事件处理示例

6节的事件处理示例采用了绝对布局,本节采用盒子布局重构该 示例:

对两个控件布局说明如下:

7.3 动动手——盒子布局管理器嵌套示例

布局管理器还可以进行嵌套,我们通过一个示例介绍盒子布局管理 器的嵌套。在该示例窗口中包括两个按钮和一个静态文本。

在本例中采用了嵌套布局,首先将两个按钮(b1和b2)放到一个水 平方向的盒子布局管理器对象(hbox)中,然后将一个静态文本(static text)和hbox放到一个垂直方向的盒子布局管理器对象(vbox)中。

8 控件

wxPython的所有控件都继承自wx.Control类。之前的示例已经使用 了静态文本和按钮,本节重点介绍文本输入控件、单选按钮、复选框、 列表和静态图片控件。

8.1 文本输入控件

文本输入控件(wx.TextCtrl)是可以输入文本的控件。

动动手 在界面中实现三个文本输入控件和三个静态文本。

8.2 复选框和单选按钮

多选控件是复选框(wx.CheckBox),复选框(wx.CheckBox)有 时也能单独使用,能提供两种状态的开和关。

单选控件是单选按钮(wx.RadioButton),同一组的多个单选按钮 应该具有互斥性,就是当一个按钮按下时,其他按钮一定释放。

动动手 在界面中实现一组复选框和一组单选按钮。

通过Python指令运行文件。

8.3 列表

对列表控件可以进行单选或多选,列表控件类是wx.ListBox。

动动手 在界面中实现以下两个列表控件。

wx.LB_SINGLE:单选。

wx.LB_MULTIPLE:多选。

wx.LB_EXTENDED:多选,但是需要在按住Ctrl或Shift键时选择项 目。

wx.LB_SORT:对列表选择项进行排序。

8.4 静态图片控件

静态图片控件用于显示一张图片,图片可以是wx.Python所支持的 任意图片格式,静态图片控件类是wx.StaticBitmap。

动动手 在界面中实现两个按钮和一个静态图片控件,在单击按钮时显示不 同的图片。

示例代码如下:

10 练一练

1 请在官方文档中查找下拉列表控件(wx.ComboBox)的使用方法 。

2 判断对错:(请在括号内打√或×,√表示正确,×表示错误)。

1)静态图片控件在替换图片后,需要重写绘制窗口,否则布局会 发生混乱。()

2)盒子布局管理器可以让其中的子窗口(或控件)沿垂直或水平 方向布局,但布局管理器本身不能嵌套。()

相关推荐

  1. python图表用户界面(gui)的选择

    2024-04-02 16:00:05       29 阅读
  2. 基于Python图形用户界面设计及应用

    2024-04-02 16:00:05       45 阅读
  3. Python图形用户界面的文本文件加密工具

    2024-04-02 16:00:05       30 阅读
  4. python图形用户界面和游戏开发_day010

    2024-04-02 16:00:05       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-02 16:00:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-02 16:00:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-02 16:00:05       87 阅读
  4. Python语言-面向对象

    2024-04-02 16:00:05       96 阅读

热门阅读

  1. zookeeper 监控 与 JVM 设置

    2024-04-02 16:00:05       35 阅读
  2. 机器学习模型之随即森林

    2024-04-02 16:00:05       35 阅读
  3. 人工智能在现代科技中的应用和未来发展趋势

    2024-04-02 16:00:05       42 阅读
  4. 【React】在React中如何渲染空格

    2024-04-02 16:00:05       46 阅读
  5. 掏心窝子聊聊35岁了程序员何去何从?

    2024-04-02 16:00:05       40 阅读
  6. 基于springboot的高校线上心理咨询室

    2024-04-02 16:00:05       42 阅读
  7. 深入浅出SQL排序与函数

    2024-04-02 16:00:05       38 阅读
  8. AIGC重塑金融:AI大模型驱动的金融变革与实践

    2024-04-02 16:00:05       40 阅读
  9. Git 基本使用方法

    2024-04-02 16:00:05       34 阅读
  10. 【单例设计模式】

    2024-04-02 16:00:05       43 阅读
  11. Linux的信号栈的实现(1)

    2024-04-02 16:00:05       32 阅读