跳转至

关于本书

写一本书,远不止于应用语法和标点符号规则。同样地,开发一个应用程序,也不仅仅需要掌握编程语言和库API的知识。仅仅精通语法规则和函数调用,并不足以设计出能够赋能用户完成工作、保护宝贵数据并产出无瑕疵输出的应用程序。作为程序员,我们还需要能够将用户的需求和期望转化为有效的界面设计,并选择最佳的技术来实现这些设计。我们需要能够组织大型代码库,对其进行测试和维护,确保代码易于管理且没有粗心大意造成的错误。本书的目标远不止于成为某个特定GUI工具包的参考手册。通过一个虚构的工作场景,你将体验到作为一名小型办公环境中的应用程序程序员的感受。除了学习Tkinter和其他一些有用的库之外,你还将学到许多技能,这些技能将帮助你从编写简短脚本的程序员成长为能够开发功能齐全的图形应用程序的程序员。当你读完这本书时,你应该有信心能够开发出一个简单但实用的数据导向应用程序,以满足工作环境的需求。

这本书适合谁来读

这本书适合那些已经掌握了Python基础,但编写经验仅限于简单脚本的初学者。我们将一步步引导你设计和创建一个更大的应用程序,并向你介绍一些技能,这些技能将有助于你在编程领域取得进步。

同时,它也面向那些已经使用Python进行数据科学、网页开发或系统管理,但现在希望拓展到创建GUI应用程序的读者。我们将讲解创建本地GUI应用程序所需的知识和技能。

最后,这本书对于只是想学习Tkinter的有经验的Python程序员来说也可能非常有用,因为书中很大一部分内容详细阐述了使用Tkinter库的细微之处。

这本书涵盖的内容

第1章,Tkinter简介,向你介绍Tkinter库的基础知识,并引导你创建一个基本的Tkinter应用程序。同时,还会以IDLE为例,向你展示一个Tkinter应用程序的实例。

第2章,设计GUI应用程序,讲解如何将一组用户需求转化为可实施的设计方案。

第3章,使用Tkinter和Ttk小部件创建基本表单,向你展示如何创建一个基本的数据输入应用程序,并将输入的数据追加到CSV文件中。

第4章,使用类组织代码,向你介绍通用的面向对象编程技术,以及Tkinter中类的特定用法,这将使我们的GUI程序更易维护和理解。

第5章,通过验证和自动化减少用户错误,演示如何在表单输入中自动填充和验证数据。

第6章,规划应用程序的扩展,让你熟悉如何智能地将单文件脚本拆分为多个文件,如何构建一个可导入的Python模块,以及如何分离大型代码库的关注点,使其更易管理。

第7章,使用菜单和Tkinter对话框创建菜单,概述如何使用Tkinter创建主菜单。同时,还将展示如何使用几种内置对话框类型来实现常见的菜单功能。

第8章,使用Treeview和Notebook导航记录,详细介绍使用Ttk Treeview和Notebook构建数据记录导航系统的过程,以及将我们的应用程序从仅追加功能扩展为具备完整读取、写入和更新能力的过程。

第9章,使用样式和主题改善外观,向你介绍如何更改应用程序的颜色、字体和小部件样式,以及如何使用它们使应用程序更加易用和吸引人。

第10章,保持跨平台兼容性,介绍Python和Tkinter的技术,以确保你的应用程序在Windows、macOS和Linux系统上都能顺畅运行。

第11章,使用unittest创建自动化测试,讨论如何通过自动化单元测试和集成测试来验证你的代码。

第12章,使用SQL改进数据存储,带你将应用程序从CSV平面文件存储转换为SQL数据库存储。你还将全面了解SQL和关系数据模型。

第13章,连接到云端,涵盖如何与网络资源(如HTTP服务器、REST服务和SFTP服务器)进行交互。你将学习如何与这些服务互动,以下载和上传数据和文件。

第14章,使用线程和队列进行异步编程,解释如何使用异步和多线程编程来保持应用程序在长时间运行过程中的响应性。

第15章,使用Canvas小部件进行数据可视化,教你如何使用Tkinter Canvas小部件创建可视化和动画。你还将学习如何集成Matplotlib图表,并构建一个简单的游戏。

第16章,使用setuptools和cxFreeze进行打包,探讨如何准备你的Python应用程序,以便作为Python包或独立可执行文件进行分发。

如何充分利用本书

这本书假设你已经掌握了Python 3的基础知识。你应该知道如何使用内置类型和函数编写和运行简单脚本,如何定义自己的函数,以及如何从标准库中导入模块。你可以在运行最新版本的Microsoft Windows、Apple macOS或GNU/Linux发行版的计算机上阅读此书。请确保你已安装Python 3和Tcl/Tk(第1章“Tkinter简介”中包含了Windows、macOS和Linux的安装说明),并且拥有一个你使用起来舒适的代码编辑环境(我们建议使用IDLE,因为它随Python一起提供且使用Tkinter。我们不推荐使用Jupyter、Spyder或类似的环境,因为它们主要针对分析型Python,而非应用程序开发)。在后面的章节中,你需要能够访问互联网,以便安装Python包和PostgreSQL数据库。

下载案例代码文件

本书的代码包也托管在GitHub上,地址为:https://github.com/PacktPublishing/Python-GUI-Programming-with-Tkinter-2E。我们还在https://github.com/PacktPublishing/提供了来自我们丰富书籍和视频目录的其他代码包。快去看看吧!

下载彩色图片

我们还提供了一个PDF文件,其中包含本书中使用的截图/图表的彩色图像。您可以在此下载:https://static.packt-cdn.com/downloads/9781801815925_ColorImages.pdf

本书的约定

本书中使用了一些文本约定。

CodeInText:表示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄。例如:“将代码保存在solve_the_worlds_problems.py中,并在终端提示符下键入python solve_the_worlds_problems.py来执行它。”

代码块设置如下:

1
2
3
4
5
6
7
8
import tkinter as tk
root = tk.TK()
def solve():
    raise NotImplemented("Sorry!")
tk.Button(
    root, text="Solve the world's problems", command=solve
).pack()
root.mainloop()

当我们希望引起您对代码块中特定部分的注意时,尤其是为了指示对现有代码的更改,会将相关行或项目设置为粗体:

1
2
3
4
5
6
7
8
9
import tkinter as tk
from tkinter import messagebox
root = tk.TK()
def solve():
    messagebox.showinfo('The answer?', 'Bananas?')
tk.Button(
    root, text="Solve the world's problems", command=solve
).pack()
root.mainloop()

请注意,书中所有Python代码都使用4个空格缩进。

任何命令行输入或输出都以$符号表示提示符,如下所示:

1
2
$ mkdir Bananas
$ cp plantains.txt Bananas/
旨在用于Python shell或REPL的命令行输入以>>>提示符打印,如下所示:
1
2
>>> print('This should be run in a Python shell')
'This should be run in a Python shell'
shell的预期输出打印在没有提示符的行上。

粗体:表示新术语、重要单词或您在屏幕上看到的单词,例如在菜单或对话框中。例如:“从管理面板中选择系统信息。”

Attention

警告或重要说明像这样展示所示。

Tip

小提示和技巧像这样所示。

执行python和pip命令

当我们需要指示读者执行本书中的Python脚本时,我们会使用如下命令行进行说明:

1
$ python myscript.py
根据您的操作系统或Python配置,python命令可能会执行Python 2.x而不是Python 3.x。您可以通过运行以下命令来验证这一点:
1
2
$ python --version
Python 3.9.7

如果您的系统上此命令输出的是Python 2而不是3,那么您需要更改所有python命令,以便您的代码在Python 3中执行。通常,这意味着使用python3命令,如下所示:

1
$ python3 myscript.py
同样的注意事项也适用于用于从Python包索引安装库的pip命令。您可能需要使用pip3命令来将库安装到您的Python 3环境中,例如:
1
$ pip3 install --user requests

联系我们

我们始终欢迎读者的反馈。

一般反馈:请发送电子邮件至feedback@packtpub.com,并在邮件主题中注明书名。如果您对本书的任何方面有疑问,请发送电子邮件至questions@packtpub.com与我们联系。

勘误:尽管我们已经竭尽全力确保内容的准确性,但错误仍可能发生。如果您在本书中发现了错误,我们非常希望您能向我们报告。请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击“勘误提交表”链接,并输入详细信息。

盗版:如果您在互联网上发现任何形式的我们的作品非法副本,我们非常希望您能提供其位置地址或网站名称。请发送电子邮件至copyright@packtpub.com与我们联系,并提供相关材料的链接。

如果您有兴趣成为作者:如果您在某个领域有专长,并且有兴趣撰写或参与撰写一本书,请访问http://authors.packtpub.com

分享您的想法

读完《Python GUI编程之Tkinter实战(第二版)》后,我们非常想听听您的想法!请点击此处直接进入该书的亚马逊评论页面,分享您的反馈。

您的评论对我们和技术社区都非常重要,将有助于我们确保提供高质量的内容。