第 10 章 GUI 编码技术图形用户界面编码技术
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
"制造更好的捕鼠器"
本章将继续介绍如何使用 Python 和 tkinter 库构建图形用户界面,并将介绍一系列更高级的图形用户界面编程模式和技术。在前三章中,我们探索了 tkinter 本身的所有基础知识。在这里,我们的目标是将它们用于添加在大型程序中有用的高级结构。也就是说,我们的重点将转移到编写自己的代码,以实现基本 tkinter 工具包之外的实用程序--我们将在本书后面更完整的示例中发现这些实用程序。
本章我们将学习以下一些技术:
在 "混合 "类中提供常用的图形用户界面操作
从数据结构模板创建菜单和工具栏
为命令行工具添加图形用户界面
将输入和输出流重定向到图形用户界面部件
即时重载图形用户界面回调处理程序
封装顶级 Windows 界面并使其自动化
在图形用户界面中使用线程和队列避免阻塞
按需从非图形用户界面程序中弹出图形用户界面窗口
使用套接字和管道将图形用户界面添加为独立程序
与本书的其他章节一样,本章具有双重目的--我们不仅要学习 GUI 编程,还要进一步了解 Python 的一般开发概念,如面向对象编程 (OOP) 和代码重用。正如我们将看到的那样,通过用 Python 对 GUI 工具进行编码,可以很容易地将它们应用到各种环境和程序中。
作为下一章的过渡,本章最后还将介绍 PyDemos 和 PyGadgets 启动器工具栏--用于启动大型 GUI 示例的图形用户界面。虽然它们的大部分代码都不属于本书,但我们将探索它们的结构,以帮助您在示例发布包中学习它们。
在开始之前,有两点需要注意:首先,请务必阅读本章的代码列表,以了解我们在叙述中不会介绍的细节。其次,虽然本章技术的小例子会在学习过程中出现,但更现实的应用还需要等待更现实的程序。我们将在下一章的大型示例和本书的其他部分中使用这些技术。事实上,我们会经常重复使用在这里开发的模块,作为本书中其他程序的工具;可重复使用的软件希望被重复使用。首先,让我们来做我们最擅长的事情,构建一些工具。
GuiMixin:常用工具混合类
如果你阅读了前三章,你可能会注意到,如果我们手工制作每个部件,用于构建非简单图形用户界面的代码可能会变得很长。如果我们坚持这种策略,图形用户界面编程往往会变成打字练习,或者至少是剪切和粘贴文本编辑器的操作练习。
小工具生成器功能
与手工执行每个步骤相比,更好的办法是尽可能多地封装或自动执行图形用户界面的构建过程。一种方法是对提供典型部件配置的函数进行编码,并在适用这些函数的情况下自动执行构建过程。例如,我们可以定义一个按钮函数来处理配置和打包细节,并支持我们绘制的大部分按钮。例 10-1提供了少量此类 widget 生成器调用。
""" ############################################################################### wrap up widget construction in functions for easier use, based upon some assumptions (e.g., expansion); use **extras fkw args for width, font/color, etc., and repack result manually later to ...