第9章综合应用案例实战_第1页
第9章综合应用案例实战_第2页
第9章综合应用案例实战_第3页
第9章综合应用案例实战_第4页
第9章综合应用案例实战_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第9 9章章 综合应用案例实战综合应用案例实战董付国董付国微信公众号:微信公众号:PythonPython小屋小屋本章学习目标 了解标准库tkinter在GUI应用程序开发方面的应用 了解SQLite数据库基本操作并能编写简单数据库应用程序 了解使用Python读取Word、Excel、PowerPoint文件内容的方法 了解网络爬虫程序基本原理并能编写简单的爬虫程序 了解扩展库matplotlib在可视化方面的应用9.1 tkinter应用开发-9.1.1 tkinter基础知识 Python标准库tkinter是对Tcl/Tk的进一步封装,是一套完整的GUI开发模块的组合或套件,这些模块

2、共同提供了强大的跨平台GUI编程的功能,所有的源码文件位于Python安装目录中libtkinter文件夹。 除了在_init_.py文件中提供了导入tkinter就可以使用的常用组件、常量和变量类型之外,还通过ttk模块提供了Combobox、Progressbar和Treeview等组件,scrolledtext模块中提供了带滚动条的文本框,messagebox、commondialog、dialog、colorchooser、simpledialog、filedialog等模块提供了各种对话框,font模块提供了与字体有关的对象,这些需要导入相应的模块之后才能使用。9.1.1 tkint

3、er基础知识组件名称组件名称说明说明Button按钮Canvas画布,用于绘制直线、椭圆、多边形等各种图形Checkbutton复选框形式的按钮Entry单行文本框Frame框架,可作为其他组件的容器,常用来对组件进行分组Label标签,常用来显示单行文本Listbox列表框Menu菜单Message多行文本框Radiobutton单选钮,同一组中的单选钮任何时刻只能有一个处于选中状态Scrollbar滚动条Toplevel常用来创建新的窗口9.1.1 tkinter基础知识buttonImport = tkinter.Button(root, text=导入学生信息, command=but

4、tonImportClick) 参数root用来说明这次创建的按钮是要放置在root这个应用程序主界面上的,参数text用来设置按钮上显示的文本,参数command用来指定单击该按钮时要执行的操作,这里buttonImportClick是一个自定义函数的名字,单击按钮之后会执行buttonImportClick函数中的代码。 除此之外,常用的参数还有background(背景色)、bitmap(按钮上显示的位图)、borderwidth(边框宽度)、cursor(鼠标形状)、font(字体)、foreground(前景色)、justify(文本对齐方式)、height(高度)、width(宽度

5、)等。9.1.1 tkinter基础知识 按钮组件的pack()和place()方法用来把按钮组件放置到界面上,下面的代码使用place()方法把按钮放置到界面上距离左边界和上边界均为20个像素的位置:buttonImport.place(x=20, y=20, height=30, width=100)9.1.1 tkinter基础知识 创建一个字符串变量,然后再创建一个输入框(或单行文本框)Entry组件放置到界面上,并把字符串变量和输入框绑定到一起。xuehao = tkinter.StringVar(root)entryXuehao = tkinter.Entry(root, # 设置

6、字体、字号 font=(simhei, 20), # 设置前景色、背景色 fg=red, bg=#66dddd, # 绑定变量 textvariable=xuehao)# 放置到窗口上指定位置,并设置组件尺寸entryXuehao.place(x=100, y=5, width=150, height=40)9.1.1 tkinter基础知识 使用tkinter开发GUI程序的基本步骤为:1)编写通用代码,例如数据库操作、程序中需要多次调用的函数。2)创建应用程序,搭建界面,放置菜单、标签、按钮、输入框、单选钮、复选框、组合框等组件,设置组件的位置、宽度、高度、文本、颜色、字体等属性以及必要的

7、事件处理函数。3)编写组件的事件处理函数代码实现预定的业务逻辑。4)启动消息主循环,启动应用程序。9.1.2 tkinter应用开发综合案例 例例9-1 安装Python之后,自带的IDLE是一个简单的Python代码编辑和运行环境,具有语法高亮、智能提示、自动缩进等功能。编写程序,使用tkinter编写Python代码编辑器,实现代码自动缩进与反缩进以及语法高亮等基本功能,支持对直接输入的代码和复制来的代码进行自动处理。code例9-1.py9.1.2 tkinter应用开发综合案例9.1.2 tkinter应用开发综合案例 例例9-2 编写程序,使用tkinter设计界面,输入网址URL之

8、后,使用Python扩展库qrcode生成一个二维码图片,微信扫描二维码可以直接跳转到指定的页面。code例9-2.py9.2 SQLite数据库操作-9.2.1 SQLite数据库基础 SQLite是内嵌在Python中的轻量级、基于磁盘文件的数据库管理系统,不需要安装和配置服务器,支持使用SQL语句来访问数据库。该数据库使用C语言开发,支持大多数SQL91标准,支持原子的、一致的、独立的和持久的事务,不支持外键限制;通过数据库级的独占性和共享锁定来实现独立事务,当多个线程同时访问同一个数据库并试图写入数据时,每一时刻只有一个线程可以写入数据。默认情况下,SQLite数据库必须和相应的服务端

9、程序在同一台服务器上,除非自己编写专门的代理程序。9.2.1 SQLite数据库基础 SQLite支持最大140TB大小的单个数据库,每个数据库完全存储在单个磁盘文件中,一个数据库就是一个文件,通过直接复制数据库文件就可以实现备份。如果需要使用可视化管理工具来操作SQLite数据库,可以使用SQLiteManager、SQLite Database Browser或其他类似工具。9.2.1 SQLite数据库基础 在SQLite数据库中,主要有以下几种数据类型(或者说是存储类别): NULL: 值为一个NULL空值。 INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4

10、,6或8个字节。 REAL: 所有值都是浮点数值,被存储为8字节的IEEE浮点数。 TEXT: 值为文本字符串,使用数据库编码存储,如UTF-8、UTF-16-BE或UTF-16-LE。 BLOB: 值是数据的二进制对象,如何输入就如何存储,不改变格式。9.2.1 SQLite数据库基础 Python标准库sqlite3提供了SQLite数据库访问接口,不需要额外配置,连接数据库之后可以使用SQL语句对数据进行增、删、改、查等操作。9.2.1 SQLite数据库基础 import sqlite3 conn = sqlite3.connect(test.db) # 连接或创建数据库 cur =

11、conn.cursor() # 创建游标 cur.execute(CREATE TABLE tableTest(field1 numeric, field2 text) # 创建数据表 data = zip(range(5), abcde) cur.executemany(INSERT INTO tableTest values(?,?), data) # 问号是占位符,执行时被替换 # 插入多条记录9.2.1 SQLite数据库基础 cur.execute(SELECT * FROM tableTest ORDER BY field1 DESC) # 查询记录 for rec in cur.

12、fetchall(): print(rec)(4, e)(3, d)(2, c)(1, b)(0, a) mit() # 提交事务,保存数据9.2.2 常用SQL语句(1)创建数据表)创建数据表CREATE TABLE tablename(col1 type1 NOT NULL PRIMARY KEY,col2 type2 NOT NULL,.)(2)删除数据表)删除数据表DROP TABLE tablename(3)插入记录)插入记录INSERT INTO tablename(field1,field2) VALUES(value1,value2)9.2.2 常用SQL语句(4)查询记录)查

13、询记录SELECT * FROM tablename WHERE field1value1SELECT field1,field2,field3 FROM tablename WHERE field1 LIKE %value1%SELECT * FROM tablename WHERE field1 BETWEEN value1 AND value2SELECT * FROM tablename ORDER BY field1,field2 DESCSELECT COUNT(*) AS totalcount FROM tablenameSELECT SUM(field1) AS sumvalu

14、e FROM tablenameSELECT AVG(field1) AS avgvalue FROM tablenameSELECT MAX(field1) AS maxvalue FROM tablenameSELECT MIN(field1) AS minvalue FROM tablenameSELECT TOP 10 * FROM tablename WHERE field1 LIKE %value1% ORDER BY field1SELECT * FROM tablename WHERE field1 LIKE %value1% ORDER BY field1 LIMIT 109

15、.2.2 常用SQL语句(5)更新记录)更新记录UPDATE tablename SET field1=value1 WHERE field2=value2(6)删除记录)删除记录DELETE FROM tablename WHERE field1=value19.2.3 使用tkinter+SQLite开发个人通信录管理系统 本节通过一个通信录管理系统来演示SQLite数据库的应用,程序界面使用tkinter开发,可以结合9.1节的内容和代码中的注释进行理解,更多数据库操作案例可以通过微信公众号“Python小屋”历史文章清单https:/ 使用tkinter+SQLite开发个人通信录管理

16、系统 例例9-3 编写程序实现通信录管理系统,使用SQLite数据库存储数据,使用tkinter设计界面。code例9-3.pyw9.3 Office文档操作-9.3.1 docx、xlsx、pptx文件操作基础 扩展库python-docx、docx2python提供了docx格式Word文档操作的接口。扩展库python-docx可以使用pip install python-docx命令进行安装,安装之后叫docx。扩展库docx2python的安装名称和使用名称是一致的。9.3.1 docx、xlsx、pptx文件操作基础 在真正操作docx文件之前,需要对这种类型的文件结构有一定的了解

17、。在docx文件中,有很多sections(节)、paragraphs(段落)、tables(表格)、inline_shapes(行内元素)组成,其中每个段落又包括一个或多个run(一段连续的具有相同格式的文本),每个表格又包含一个或多个rows(行)和columns(列),每行或列又包括多个cells(单元格)。所有这些对象都具有大量的属性,通过这些属性来读取或控制Word文档中的内容和格式。9.3.1 docx、xlsx、pptx文件操作基础 Python扩展库openpyxl提供了操作xlsx格式Excel文件的接口,可以使用pip install openpyxl安装这个扩展库。Ana

18、conda3安装包中已经集成安装了openpyxl,不需要再次安装。 每个Excel文件称为一个workbook(工作簿),由若干worksheet(工作表)组成,每个工作表又由若干rows(行)和columns(列)组成,每个行和列由若干单元格组成。在单元格中可以存储整数、实数、字符串、公式、图表等对象。9.3.1 docx、xlsx、pptx文件操作基础 Python扩展库python-pptx提供了pptx格式PowerPoint文件操作的接口,可以使用pip install python-pptx命令安装,安装之后的名字叫pptx。 每个PowerPoint文件称为一个Presenta

19、tion(演示文档),每个Presentation对象包含一个由所有幻灯片组成的属性slides,每个幻灯片对象的属性Shapes包含了这一页幻灯片上的所有元素,可以是TEXT_BOX(文本框)、PICTURE(图片)、CHART(图表)、TABLE(表格)或其他等元素,分别对应不同的shape_type属性值。9.3.2 查找包含特定关键字的Word、Excel、PowerPoint文件 例例9-4 编写程序,搜索并输出当前文件夹中包含特定关键字字符串的Word、Excel、PowerPoint文件名。code例9-4.py 使用方法:c:Python38Python.exe 例9-4.py

20、 董付国c:Python38Python.exe 例9-4.py /s 董付国9.4 网络爬虫实战-9.4.1 requests基本操作 Python扩展库requests提供了比标准库urllib更简洁的形式来处理HTTP协议和获取网页内容,也是比较常用的爬虫工具之一,使用pip可以直接在线安装。9.4.1 requests基本操作 下面的代码演示了增加头部并设置访问代理的用法: url = https:/ headers = user-agent: my-app/0.0.1 r = requests.get(url, headers=headers)9.4.1 requests基本操作 下

21、面的代码演示了以POST方式访问网页并提交数据的用法: payload = key1: value1, key2: value2 r = requests.post(/post, data=payload) print(r.text) # 查看网页信息,略去输出结果 url = https:/ payload = some: data r = requests.post(url, json=payload) print(r.text) # 查看网页信息,略去输出结果 print(r.headers) # 查看头部信息,略去输出结果 print(r.header

22、sContent-Type)application/json; charset=utf-8 print(r.headersContent-Encoding)gzip9.4.1 requests基本操作 下面的代码演示了get()方法的cookies参数的用法: r = requests.get(http:/ print(r.cookies) # 查看cookies url = /cookies cookies = dict(cookies_are=working) r = requests.get(url, cookies=cookies) # 设置cooki

23、es print(r.text) cookies: cookies_are: working 9.4.2 BeautifulSoup基本操作 BeautifulSoup是一个非常优秀的Python扩展库,可以用来从HTML或XML文件内容中提取感兴趣的数据,允许指定使用不同的解析器。可以使用pip install beautifulsoup4直接进行安装,安装之后应使用from bs4 import BeautifulSoup导入并使用。9.4.2 BeautifulSoup基本操作 from bs4 import BeautifulSoup BeautifulSoup(hello world

24、!, lxml) # 自动添加和补全标签hello world! html_doc = The Dormouses storyThe Dormouses storyOnce upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well.9.4.2 BeautifulSoup基本操作 soup = BeautifulSoup(html_doc, html.parser) print(soup.prettify

25、() The Dormouses story The Dormouses story Once upon a time there were three little sisters; and their names were Elsie , Lacie and Tillie ;and they lived at the bottom of a well. . 9.4.2 BeautifulSoup基本操作 print(soup.title) # 访问特定的标签The Dormouses story print() # 标签名字title print(soup.t

26、itle.text) # 标签文本The Dormouses story print(soup.title.string)The Dormouses story print(soup.title.parent) # 上一级标签The Dormouses story print(soup.head)The Dormouses story print(soup.b) # 使用不同形式访问标签The Dormouses story print(soup.body.b)The Dormouses story print() # 把整个BeautifulSoup对象看做标签对象docu

27、ment9.4.2 BeautifulSoup基本操作 print(soup.body)The Dormouses storyOnce upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well.9.4.2 BeautifulSoup基本操作 print(soup.p)The Dormouses story print(soup.pclass) # 标签属性title print(soup.p.get(c

28、lass) # 也可以这样查看标签属性title print(soup.p.text)The Dormouses story print(soup.p.contents)The Dormouses story print(soup.a)Elsie print(soup.a.attrs) # 查看标签所有属性class: sister, href: http:/ id: link19.4.2 BeautifulSoup基本操作 print(soup.find_all(a) # 查找所有标签Elsie, Lacie, Tillie print(soup.find_all(a, b) # 同时查找和

29、标签The Dormouses story, Elsie, Lacie, Tillie9.4.2 BeautifulSoup基本操作 import re # 导入正则表达式模块 print(soup.find_all(href=pile(elsie) # 查找href包含特定关键字的标签Elsie print(soup.find(id=link3)Tillie print(soup.find_all(a, id=link3)Tillie for link in soup.find_all(a): print(link.text,:,link.get(href)Elsie : http:/ :

30、http:/ : http:/ BeautifulSoup基本操作 print(soup.get_text() # 返回所有文本The Dormouses storyThe Dormouses storyOnce upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well. soup.aid = test_link1 # 修改标签属性的值 print(soup.a)Elsie soup.a.string.replace_with(test_Elsie) # 修改标签文本Elsie print(soup.a.string)test_Elsie9.4.2 BeautifulSoup基本操作 print(soup.prettify() The Dormouses story The Dormouses story Once upon a time there were three little sisters; and their names were test_Elsie , Lacie and Tillie ;and they lived at the bottom of a w

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论