python自学之《21天学通Python》(9)——基于tkinter的GUI编程

2023-10-17 12:10

本文主要是介绍python自学之《21天学通Python》(9)——基于tkinter的GUI编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第12章 基于tkinter的GUI编程

Windows的图形用户界面非常方便用户操作,因此,Windows操作系统得到了广大个人计算机用户的欢迎。在Python中,也可以编写美观的GUI界面应用程序与项目。tkinter是Python自带的用于GUI编程的模块,tkinter是对图形库TK的封装。tkinter是跨平台的,这意味着在Windows下编写的程序,可以不加修改地在Linux、UNIX等系统下运行。因此,tkinter的优势在于其可移植性。

12.1GUI概述

在这里插入图片描述
12.1.2 Python编写GUI程序库
在这里插入图片描述
在这里插入图片描述
12.2 tkinter图形化库简介

使用tkinter可以创建完整的GUI程序。在tkinter中,可以直接使用文本框、按钮、标签等组件(widget)进行GUI编程。换句话说,要实现某个界面元素,只要调用对应的组件即可。tkinter是Python的一个模块,可以像其他模块一样在Python的交互式shell中(或者“.py”程序中)被导入,tkinter模块被导入后即可使用tkinter模块中的函数、方法等。

12.2.1 创建GUI程序第一步

使用tkinter创建图形界面时要首先导入tkinter模块。可以在Python的交互式环境中输入如下语句验证Python是否安装了tkinter模块。

如果上述语句执行成功,则表示已经安装了tkinter模块。在编写程序时只要使用import语句导入tkinter模块,即可使用tkinter模块中的函数、对象等进行GUI编程。

在使用tkinter模块时,首先要使用tkinter.Tk生成一个主窗口对象,然后才能使用tkinter模块中其他的函数、方法等。当生成主窗口以后,可以向其添加组件,或者直接调用其mainloop方法进行消息循环。

【实例12-1】 演示了仅创建一个简单的窗口而没有使用组件,代码如下:

在这里插入图片描述
在这里插入图片描述
12.2.2 创建GUI程序第二步

在tkinter中,组件与主窗口一样,也是使用tkinter模块中相应的组件函数生成的。组件生成后就可以使用pack、grid或place方法将其添加到窗口中。

【实例12-2】 演示了具有标签和按钮组件的主窗口,代码如下:
在这里插入图片描述

注意 运行以上实例后,单击两个按钮均无反应,这是因为在程序中未添加按钮组件单击事件的处理函数。

12.3 tkinter组件

在上一节中创建的窗口实际上是存放组件的一个“容器”。如果仅创建一个不包含组件的窗口,其作用也仅是测试tkinter模块。更有意义的做法是,当窗口创建好以后,应根据程序的功能向窗口中添加合适的组件,然后定义与实际相关的处理函数,这样才算一个完整的GUI程序。

12.3.1 组件分类
在这里插入图片描述在这里插入图片描述
12.3.2 布局组件

在前面的例子中仅使用组件的pack方法将组件添加到窗口中,而未设置组件的位置。因此,前面例子中组件位置都是由tkinter模块自动确定的。对于包含较多组件的窗口,为了让组件布局合理,可以通过向pack传递参数来设置组件在窗口中的位置。除了组件的pack方法以外,还可以使用grid方法和place方法来放置组件。组件的pack方法可以使用以下几个参数来设置组件的位置属性。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

12.4 常用tkinter组件

tkinter库中有很多GUI组件,其中包括在图形化界面中常用的按钮、标签、文本框、菜单、单选框、复选框等,本节主要介绍各种常用组件的使用方法。

12.4.1 按钮
在这里插入图片描述
在这里插入图片描述
注意 一些组件具有相似的控制参数,所以你不必强记它。

【实例12-3】 演示了在主窗口中创建各种不同的按钮,代码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
12.4.2 文本框

文本框主要用来接收用户输入。使用tkinter.Entry和tkinter.Text可以创建单行文本框和多行文本框组件。通过向其传递参数可以设置文本框的背景色、大小、状态等。如表12.4所示是tkinter.Entry和tkinter.Text共有的几个控制参数。

在这里插入图片描述
在这里插入图片描述

【实例12-4】 演示了在主窗口中显示创建的各种不同类型的文本框,代码如下:
在这里插入图片描述
在这里插入图片描述
12.4.3 标签

标签是提供在窗口中显示文本的组件。除显示文本以外,标签还可以显示图片。使用tkinter.Label可以创建标签组件。控制标签的参数如表12.5所示。

在这里插入图片描述
【实例12-5】 演示了在主窗口中显示创建的各种不同类型的标签组件,代码如下:
在这里插入图片描述
在这里插入图片描述
12.4.4 菜单
在tkinter中,菜单组件的添加与其他的组件有所不同。菜单要使用创建的主窗口的config方法添加到窗口中。
【实例12-6】 演示了添加菜单的主窗口,代码如下:
在这里插入图片描述
在这里插入图片描述
【实例12-7】 演示了添加弹出式菜单(快捷菜单或右键菜单)的主窗口,代码如下:
在这里插入图片描述
在这里插入图片描述
12.4.5 单选框和复选框
单选框往往用于一组互斥的选项,即一组单选框中只有一个可以被选中。而复选框则由一个复选框组件来表示两种不同的状态,即被选中表示一种状态,未被选中表示另一种状态。
在这里插入图片描述
在这里插入图片描述
【实例12-8】 演示了创建一组单选框和一个复选框GUI实例程序,代码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意 在创建单选框和复选框前应创建其相关联的变量。

对于单选框组件和复选框组件,还有一个比较特殊的控制参数indicatoron,当向其传递值0时,组件将被绘制成按钮的形式,被选中的组件处于按下状态。

【实例12-9】 演示了创建按钮形式的单选框和复选框GUI实例程序,代码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
12.4.6 绘制图形

使用tkinter.Canvas创建Canvas绘图组件后,可以使用Canvas提供的方法在Canvas组件中绘制直线、圆弧、矩形以及图片等。Canvas绘图组件的控制参数如表12.7所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
12.5 响应操作事件

tkinter中的事件是指在各个组件上发生的各种鼠标和键盘事件。对于按钮组件、菜单组件等可以在创建组件时通过command参数指定其事件的处理函数。除组件所触发的事件外,在创建右键弹出菜单时,还需处理右击事件。类似的事件可以归结为鼠标事件、键盘事件和窗口事件。

12.5.1 事件基础

鼠标事件主要指鼠标按键的按下、释放,鼠标滚轮的滚动,鼠标指针移进、移出组件等所触发的事件。键盘事件主要指键的按下、释放等所触发的事件。窗口事件是指改变窗口大小、组件状态等变化所触发的事件。

对于鼠标事件、键盘事件和窗口事件,可以采用事件绑定的方法确定消息的处理方式。事件绑定可以使用组件的bind方法进行,或者使用bind_class()方法进行类绑定,分别调用函数或者类来响应事件。bind_all()方法也可以用来绑定事件,bind_all()方法将所有组件事件绑定到事件响应函数上。这3种方法的原型如下。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意 绑定事件到函数与绑定事件到类的区别。
12.5.2 响应事件
窗口中的事件被绑定到函数后,当该事件被触发后将调用所绑定的函数进行处理。事件触发后,系统将向该函数传递一个event对象的参数。因此被绑定的响应事件的函数应该定义成如下所示的形式。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述12.6 对话框

在tkinter中,提供了标准的对话框,在程序中可以直接使用这些标准对话框与用户交互。如果tkinter提供的对话框不能满足要求,还可以使用Toplevel来创建对话框。

12.6.1 标准对话框

标准对话框包含简单的消息框和用户输入对话框。其中,信息框以窗口的形式向用户输出信息,也可以获取用户所单击的按钮。输入对话框要求用户输入字符串、整型或者浮点型的值。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
12.6.2 自定义对话框

从上面介绍的内容可看出,tkinter中提供了简单的对话框,可以方便地在程序中使用,以打开标准的对话框。 如果tkinter所提供的对话框不能满足要求,则可以使用Toplevel组件来创建自定义的对话框。在程序中可以向Toplevel组件添加其他组件,并且定义事件响应函数或者类等。在使用tkinter创建对话框的时候,如果对话框中也需要进行事件处理,最好以类的形式来定义对话框,否则只能大量使用全局变量来处理参数,导致程序维护和调试困难。对于代码较多的tkinter GUI Python程序,整个程序也应该使用类的方式来组织。

【实例12-16】 演示了一个使用Toplevel组件创建一个简单的对话框的实例程序,代码如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述12.7 小结

本章介绍了可在不同操作系统中使用的tkinter模块,这是Python内置的GUI设计模块,可直接使用。首先介绍了tkinter模块的一些基本概念,接着介绍了tkinter模块中常用组件的创建方法及其常用属性,然后介绍了tkinter模块事件处理的方法,最后介绍了使用tkinter标准对话框及创建自定义对话框的方法。通过学习本章,你应掌握使用tkinter库来进行GUI编程的基本知识,能运用它编写一些基本的GUI界面的Python应用程序。

12.8 本章习题

在这里插入图片描述

这篇关于python自学之《21天学通Python》(9)——基于tkinter的GUI编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225273

相关文章

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中