Python GUI设计——tkinter菜鸟编程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-18 07:56:29

点击下载

作者:洪锦魁

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python GUI设计——tkinter菜鸟编程

Python GUI设计——tkinter菜鸟编程试读:

本书封面贴有清华大学出版社防伪标签,无标签者不得销售。版权所有,侵权必究。侵权举报电话:010-62782989 13701121933

图书在版编目(CIP)数据

Python GUI设计:tkinter菜鸟编程/洪锦魁著.—北京:清华大学出版社,2019

ISBN 978-7-302-53064-0

Ⅰ.①P… Ⅱ.①洪… Ⅲ.①软件工具-程序设计 Ⅳ.①TP311.561

中国版本图书馆CIP数据核字(2019)第098354号责任编辑:杨迪娜 薛 阳封面设计:杨玉兰责任校对:胡伟民责任印制:李红英出版发行:清华大学出版社网  址:http://www.tup.com.cn,http://www.wqbook.com地  址:北京清华大学学研大厦A座邮  编:100084社总机:010-62770175邮  购:010-62786544投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn质 量 反 馈:010-62772015,zhiliang@tup.tsinghua.edu.cn印装者:三河市铭诚印务有限公司经  销:全国新华书店开  本:170mm×240mm印  张:20字  数:596千字版  次:2019年8月第1版印  次:2019年8月第1次印刷定  价:79.00元产品编号:081902-01内容简介

这是国内首先使用tkinter设计GUI的中文Python书籍之一。

本书主要讲解如何在窗口内使用Python的内部模块tkinter设计图形用户接口(GUI)程序,使用户可以利用图形接口与计算机沟通。tkinter模块是一个跨平台的窗口应用程序,使用它设计的程序未来可以在Windows、Mac、Linux系统上执行。

Python的tkinter模块内部有许多Widget(可以翻译为控件或组件或部件),有了这些Widget就可以设计出所有与图形接口相关的程序应用。本书介绍的tkinter模块Widget包括Button(按钮)、Canvas(画布)、Checkbutton(选项钮)、Entry(文本框)、Frame(框架)、Label(卷标)、LabelFrame(卷标框架)、Listbox(窗体)、Menu(菜单)、MenuButton(单选按钮)、Message(信息)、OptionMenu(下拉式窗体)、PanedWindow(面板)、RadioButton(选项钮)、Scale(滚动条值控制)、Scrollbar(滚动条)、Spinbox(可微调输入控件)、Text(文字区域)、TopLevel(上层窗口)。

此外,本书还介绍了与tkinter模块设计应用有关的变量类别(Variable Classes)与事件绑定(Events and Binds)概念。

为了详细讲解GUI设计,本书共使用了约270个程序实例,详细解析各种Widget的用法,同时也将应用扩充到设计文字编辑程序、计算器、动画与相关的游戏设计中。相信读者学完本书可以轻松将GUI知识应用到未来职场,成为一位称职的软件工程师,并成为Python领域的高手。作者简介 中国台湾省计算机专家,IT知名作者。洪锦魁近年来的作品:◆ Java王者归来◆ Python王者归来◆ HTML5+CSS3王者归来◆ R语言迈向大数据之路其著作特色:所有程序语法会依特性分类,间时以实用的程序范例进行解说,可以让读者亊半功倍松地轻松掌握相关知识。序

本书是一本使用tkinter进行Python GUI设计的中文图书。

作者在2017年12月出版了《Python入门迈向高手之路王者归来》。该书从上市到现在,连续几个月皆是台湾地区Python领域最畅销的书籍。该书约820页,虽然是目前Python图书讲解内容较丰富、应用较广泛的图书,但受限于篇幅,作者深知该书仍无法涵盖所有Python的应用,特别是在GUI设计部分只是粗浅讲解。

在Python应用程序内附有tkinter模块。这个模块主要用于设计用户图形接口(Graphical User Interface,GUI),也可以用于设计跨平台的窗口应用程序。程序设计人员可以使用此模块的控件(Widget)设计图形接口让用户与计算机沟通。tkinter模块简单好用,但是目前却少有书籍对这个模块做过完整的功能介绍,这也是作者决定撰写本书的动力。

本书基本上不对Python语法进行介绍,所以读者需要有一定的Python知识基础才适合阅读本书,如果没有Python基础,建议先阅读作者所著下列两本书之一,建立起完整的Python知识框架。《Python零基础最强入门之路王者归来》《Python入门迈向高手之路王者归来》

本书将通过约270个程序实例讲解下列知识。(1)Python tkinter Widget;(2)Python tkinter.ttk Widget;(3)Widget常用属性;(4)Widget常用方法;(5)变量类别;(6)事件与绑定;(7)计算器设计;(8)文本编辑程序设计;(9)动画游戏设计。

作者曾编写过许多计算机书籍。本书沿袭作者以往著作的特色,程序实例丰富,相信读者只要遵循本书的学习路线,必定可以在最短时间内精通窗口程序设计。本书内容虽力求完美,但是书中疏漏与不足之处在所难免,希望读者不吝指正。第1章 基本概念1-1 认识GUI和tkinter

GUI英文全称是Graphical User Interface,中文为图形用户接口。早期人与计算机之间的沟通是文字形式的沟通,例如,早期的DOS操作系统、Windows的命令提示符窗口、Linux系统,等等。本书主要说明如何设计图形用户接口,以让用户可以与计算机进行沟通,并介绍使用Python内附的tkinter模块设计相关程序。

tkinter是一个开放源码的图形接口开发工具,原来是用TCL(Tool Command Language,工具命令语言)编写的GUI函数库,最初发展是从1991年开始,具有跨平台的特性,可以在Linux、Windows、Mac OS等操作系统上执行。这个tkinter工具提供许多图形接口,例如,标签(Label)、菜单(Menu)、按钮(Button)等。目前,这个tkinter工具已经移植到Python语言,属于Python语言内建的模块,在Python 2版本中该模块名称是tkinter,在Python 3版本中该模块被称为tkinter模块。

在安装Python时,就已经同时安装此模块了,在使用前只需导入此模块即可,如下所示。

之后我们就可以使用此模块的工具设计多样化的GUI程序了。软件版本变化很快,在正式进入Python的tkinter模块前首先介绍如何了解自己的tkinter版本。程序实例ch1_0.py:列出tkinter版本。执行结果

一般8.5以后的版本功能比较健全。1-2 建立窗口

可以使用下列方法建立窗口。

通常将使用Tk( )方法建立的窗口称为根窗口,之后可以在此根窗口中建立许多控件,也可以在此根窗口中建立上层窗口。本例中笔者用root当作对象名称,读者也可以自行取其他名称。上述mainloop( )方法可以让程序继续执行,同时进入等待与处理窗口事件,单击窗口右上方的“关闭”按钮,此程序才会结束。程序实例ch1_1.py:建立空白窗口,窗口默认名称是tk。执行结果 下方右图是更改窗口大小后的结果。

上述左边窗口大小是默认大小,当窗口出现后,可以拖曳移动窗口或更改窗口大小。注 在GUI程序设计中,有时候也将上述所建立的窗口(window)称

为容器(container)。1-3 窗口属性的设置

下列是与窗口相关的方法。程序实例ch1_2.py:设置窗口标题为MyWindow,同时设置宽是300,高是160。执行结果

上述第7行笔者使用bg设置了窗口背景颜色,相关颜色名称可以参考附录A。除了可以使用名称直接设置色彩,还可以使用十六进制方式设置色彩RGB,其中每个色彩用两个十六进制数字表示。从附录A的色彩表也可以看到RGB数值所代表的颜色。程序实例ch1_3.py:使用mystar.ico更改系统默认的图标,同时使用另一种更改背景颜色的方法。执行结果1-4 窗口位置的设置

geometry( )方法除了可以设置窗口的大小,也可以设置窗口的位置,此时它的语法格式如下。

上述widthxheight已说明是窗口的宽和高,width与height用x分隔。“+x”表示x是窗口左边距离屏幕左边的距离,如果是“-x”,则表示x是窗口右边距离屏幕右边的距离。“+y”表示y是窗口上边距离屏幕上边的距离,如果是“-y”则表示y是窗口下边距离屏幕下边的距离。程序实例ch1_4.py:建立一个300×160大小的窗口,此窗口左上角坐标是(400,200)。执行结果

Python是一个很灵活的程序语言,可参考下列实例。程序实例ch1_5.py:重新设计geometry( )方法,读者可以自行判断使用哪一种方式建立窗口与设置窗口位置。执行结果 与ch1_4.py相同。

在tkinter模块中可以使用下列方法获得屏幕的宽度和高度。程序实例ch1_6.py:设计窗口同时将此窗口放在屏幕中央。执行结果 读者可以在屏幕中央看到此窗口。1-5 认识tkinter的Widget1-5-1 tkinter的Widget

Widget可以翻译为控件或组件或部件。窗口建立完成后,下一步是在窗口内建立控件,我们将这些控件统称为Widget。(1)Button(按钮):可参考第4章。(2)Canvas(画布):可参考第19章。(3)Checkbutton(多选按钮):可参考7-2节。(4)Entry(文本框):可参考第5章。(5)Frame(框架):可参考8-1节。(6)Label(标签):可参考第2章。(7)LabelFrame(标签框架):可参考8-2节。(8)Listbox(列表框):可参考第12章。(9)Menu(菜单):可参考第16章。(10)MenuButton(菜单按钮):这个是过时的控件,已经被Menu( )取代。(11)Message(消息):可参考10-1节。(12)OptionMenu(下拉式菜单):可参考第13-1节。(13)PanedWindow(面板):可参考第14-1节。(14)Radiobutton(单选按钮):可参考7-1节。(15)Scale(尺度):可参考9-1节。(16)Scrollbar(滚动条):可参考12-8节。(17)Spinbox(可微调输入控件):可参考9-2节。(18)Text(文字区域):可参考第17章。(19)Toplevel(上层窗口):可参考8-3节。

从第2章开始笔者会一个一个介绍上述控件,另外在各章节中会穿插介绍控件配置管理员(Widget Layout Manager)、图像(Image)、事件(Event)。最后需要读者了解的是,在tkinter中所有的Widget其实都是面向对象的类,我们通过调用构造方法来达到建立相关Widget控件的目的。1-5-2 加强版的tkinter模块

tkinter在后来也推出了加强版的模块,称为tkinter.ttk,有时简称ttk,这个模块中有17个Widget。下列是原本tkinter有的Widget。(1)Button(2)Checkbutton(3)Entry(4)Frame(5)Label(6)LabelFrame(7)MenuButton(8)Radiobutton(9)Scale(10)Scrollbar(11)PanedWindow

下列是ttk模块新增的Widget。(1)Combobox:可参考第13-2节。(2)Notebook:可参考第14-2节。(3)Progressbar:可参考第15章。(4)Separator:可参考2-16节。(5)Sizegrip:可以拖曳最上层窗口右下方更改最上层窗口的大小。(6)Treeview:可参考第18章。

导入上述模块可以使用下列方式。

如果使用下列方式导入ttk,可以覆盖原先tkinter的控件。

使用ttk可以有更好的外观,而且也可以跨平台使用,不过并没有100%兼容。例如,fg、bg参数或一些外观相关的参数tk和ttk是不相同。ttk使用的是ttk.Style类别。1-6 Widget的共同属性

设计控件时会看到下列共同属性。

Dimensions:大小,相关应用可参考2-3节。

Colors:颜色,相关应用可参考2-2节。

Fonts:字形,相关应用可参考2-6节。

Anchor:锚(位置参考点),相关应用可参考2-4节。

Relief styles:属性边框,相关应用可参考2-10节。

Bitmaps:显示位图,相关应用可参考2-8节。

Cursors:鼠标外形,相关应用可参考2-14节。

本书从第2章起,会分别说明上述所有概念。1-7 Widget的共同方法

设计控件时会看到下列常用的共同方法。1. Configuration(1)config(option=value):Widget属性可以在建立时设置,也可以在程序执行时使用config( )重新设置,相关应用可参考2-13节。(2)cget("option"):取得option参数值,相关应用可参考2-13节。(3)keys( ):可以用此方法获得所有该Widget的参数,可参考2-15节。2. Event Processing(1)mainloop( ):让程序继续执行,同时进入等待与处理窗口事件,相关应用可参考1-2节。(2)quit( ):Python Shell窗口结束,但是所建窗口继续执行,相关应用可参考5-3节。(3)update( ):更新窗口画面,相关应用可参考15-2节。3. Event callbacks(1)bind(event,callback):事件绑定,相关应用可参考11-2节。(2)unbind(event):解除绑定,相关应用可参考11-3节。4. Alarm handlers

after(time,callback):间隔指定时间后调用callback( )方法,相关应用可参考2-13节。第2章 标签Label2-1 标签Label的基本应用

Label( )方法可以用于在窗口内建立文字或图像标签,有关图像标签的内容将在2-8节、2-9节与2-12节讨论,它的语法格式如下。

Label( )方法的第一个参数是父对象,表示这个标签将建立在哪一个父对象(可想成父窗口或称容器)内。下列是Label( )方法内其他常用的options参数。(1)anchor:如果空间大于所需时,控制标签的位置,默认是CENTER(居中),更多设定可参考2-4节。(2)bg或background:背景色彩。(3)bitmap:使用默认图标当作标签内容。(4)borderwidth或bd:标签边界宽度,默认是1。(5)compound:可以设置标签内含图像和文字时,彼此的位置关系。(6)cursor:当鼠标光标在标签上方时的外形。(7)fg或foreground:前景色彩。(8)font:可选择字形、字形样式与大小。(9)height:标签高度,单位是字符。(10)image:标签以图像方式呈现。(11)justify:存在多行文本时最后一行的对齐方式,可取值有LEFT/CENTER/RIGHT(靠左/居中/靠右),默认是居中对齐。(12)padx/pady:标签文字与标签区间的间距,单位是像素。(13)relief:默认是relief=FLAT,可由此控制标签的外框。(14)text:标签内容,如果有“\n”则可输入多行文字。(15)textvariable:可以设置标签以变量方式显示。(16)underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。(17)width:标签宽度,单位是字符。(18)wraplength:本文到多少宽度后换行,单位是像素。

我们在设计程序时,也可以将上述参数设置称为属性设置。程序实例ch2_1.py:建立一个标签,内容是“I like tkinter”,同时在Python Shell窗口中列出Label的数据类型。执行结果 下方右图是鼠标拖曳增加窗口宽度的结果,可以看到完整的窗口标题。

上述左边窗口大小是默认大小,很明显窗口高度会比没有控件时更小,因为tkinter只会安排足够的空间显示控件。上述第7行的pack( )方法主要是包装窗口的Widget控件和定位窗口的对象,所以可以在执行结果的窗口内见到上述Widget控件。此例中Widget控件是标签,第3章将针对pack相关知识做完整说明。另外,我们在Python Shell窗口中可以看到label数据类型的结果是tkinter.Label数据类型。

上述知识很重要,因为以后如果设计复杂的GUI程序,需要随时使用Widget控件的对象做更进一步的操作,此时需要使用此对象。

如果在网络上或是以后看到其他人设计的GUI程序,对于上述第6行和第7行,会经常看到可以组合成一行,可参考下列程序实例。程序实例ch2_2.py:使用Label( ).pack( )方式重新设计ch2_1.py。执行结果 GUI窗口的结果与ch2_1.py相同。

但是这时Python Shell窗口中所传回的label数据类型如下。

很明显不是tkinter.Label类型。如果这时需要用此对象进一步操作Widget控件就会发生错误,这是读者需要特别留意的。

上述程序中第6行有“label=”,因为它的数据类型已经不对了,也可以省略此设置,可参考本书配套程序实例中的ch2_2_1.py。

至于以后的程序设计,笔者建议将对象声明与pack方法分开,或是如果不会使用此对象做更进一步操作时才使用这种声明与pack一起的方式,如此不容易出现错误。2-2 Widget共同属性Color

fg或foreground:可以设置前景色彩,在此相当于是标签的颜色。bg或background可以设置背景色彩。在1-3节中已经用实例说明过bg的用法,fg的用法与bg的用法相同,下面将直接以实例说明。程序实例ch2_3.py:修改ch2_2.py,设置文字前景色是蓝色,背景色是黄色。执行结果

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载