第6章 easygui_openpyxl_matplotlib
作者:互联网
第6章
1.easygui
-
easygui是Python的一个图形化界面的库。
1.下载模块
pip install easygui
2.消息弹窗
msgbox() #消息弹窗
msgbox(msg=' ', title=' ', ok_button=' ', image=None, root=None)
msg:#需要显示的内容
title:#窗口的标题
ok_button:#按钮上显示的信息
image:#显示图片(需要路径)
#返回值:
#按钮信息
#右上角×号返回None
#########################
import easygui as t
t.msgbox('Hello','easy','Yes','wjx.png')
3.双项选择
ccbox() #双项选择
ccbox(msg=' ', title=' ', choices=(' ', ' '), image=None)
msg:#需要显示的内容
title:#窗口的标题
choices:#元组形式,两个选项显示的内容
image:#显示图片(需要路径)
#返回值:
#第一个按钮返回True
#第二个按钮返回False
#右上角×号返回None
import easygui as t
t.ccbox('下面水果,你喜欢哪一个?','选择',('苹果','橘子'))
4.多项选择
buttonbox() #多项选择
buttonbox(msg=' ', title=' ', choices=('Button1', 'Button2', 'Button3'), image=None, root=None)
msg:#需要显示的内容
title:#窗口的标题
choices:#元组形式或列表的形式,多个选项显示的内容
image:#显示图片(需要路径)
#返回值:
#点击按钮返回按钮的信息
#右上角×号返回None
import easygui as t
tuple = ('石头','剪刀','布')
t.buttonbox('选择石头剪刀布','game',tuple)
5.可选的下拉列表
choicebox()与multchoicebox()——#可选的下拉列表
choicebox(msg=' ', title=' ', choices=())
msg:#需要显示的内容
title:#窗口的标题
choices:#元组形式或列表的形式,多个选项显示的内容
#返回值:
#点击显示的选项,返回选项的信息
# 点击Cancel按钮返回None
# 右上角×号返回None
import easygui as t
list = ['石头','剪刀','布']
t.choicebox('选择石头剪刀布','game',list)
multchoicebox()#功能同样,只是他可以提供多选,拥有全选与全清按钮。
#返回值:
# 多选的返回值是多选的文本列表
# 点击Cancel按钮返回None
# 右上角×号返回None
6.文本输入框
enterbox() #文本输入框
enterbox(msg=' ', title=' ', default=' ', strip=True, image=None, root=None)
msg:#需要显示的内容
title:#窗口的标题
default:#关键字定义的是文本框默认值
strip:#的值为True时会自动忽略输入的首尾空格,False则相反
image:#显示图片(需要路径)
#返回值:
## 输入内容后返回值为输入的字符串
#点击Cancel按钮返回None
#右上角×号返回None
import easygui as t
s = t.enterbox('What do you want to say ?','想说什么','Who are you ?')
print(s)
7.数字输入
integerbox() # 数字输入
integerbox(msg='', title=' ', default='', lowerbound=0, upperbound=99, image=None, root=None,)
msg:#需要显示的内容
title:#窗口的标题
default:#关键字定义的是文本框默认值
lowerbound:#输入的最小值
upperbound:#输入的最大值
image:#显示图片(需要路径)
#返回值:
# 输入内容后返回值为输入的数字
# 点击Cancel按钮返回None
# 右上角×号返回None
#输入数值超出范围时会给出提示后从新输入。
import easygui as t
s = t.integerbox('你多大了','年龄','18',0,120)
print(s)
8.多选项输入
mulenterbox() #多选项输入
multenterbox(msg=' ', title=' ', fields=(), values=())
msg:#需要显示的内容
title:#窗口的标题
fields:#填写条目名称
values:#默认内容
#返回值:
### 输入内容后返回值为输入的内容,以列表的形式
# 点击Cancel按钮返回None
## 右上角×号返回None
import easygui as t
message = ['学号', '姓名','性别','年龄','院系','入学时间']
s = student = t.multenterbox('输入学生的信息:', '信息录入', message)
print(s)
9.密码输入框
passwordbox()#密码输入框(不显示)
passwordbox(msg=' ', title=' ', default=' ', image=None, root=None)
msg:#需要显示的内容
title:#窗口的标题
default:#关键字定义的是文本框默认值
image:#显示图片(需要路径)
#返回值:
# 输入内容后返回值为输入的字符串
## 点击Cancel按钮返回None
# 右上角×号返回None
import easygui as t
s = t.passwordbox('输入密码', '密码')
print(s)
10.多项显示
multpasswordbox() #多项显示
multpasswordbok(msg=' ', title=' ',fields=(),values=())
msg:#需要显示的内容
title:#窗口的标题
fields:#填写条目名称,最后一栏显示为*号
values:#默认内容
#返回值:
# 输入内容后返回值为输入的内容,以列表的形式
# 点击Cancel按钮返回None
# 右上角×号返回None
import easygui as t
s = t.multpasswordbox('请输入账号密码', '登录',['用户名','账号','密码'],['123','123','123'])
print(s)
-
其他GUI界面库:Tkinter、wxPython、PyGTK、PyQt、PySide等。
2.openpyxl
-
安装第三方模块
pip install openpyxl
1.sheet
from openpyxl import load_workbook
#打开excel文件
workbook = load_workbook("文件名")
#1.获取所有的sheet名称
name_list = workbook.sheetnames
print(name_list)
#2.根据名称获取sheet
sheet_object = workbook["sheetname"]
print(sheet_object)
#3.根据索引获取sheet
sheet = worksheets[0]
#4.循环获取所有的sheet
for sheet_object in wcrkbook:
print(sheet_object)
#不加.sheetnames内部也是自动获取sheetnames的
2.sheet中单元格的数据
from openpyxl import load_workbook
workbook = load_workbook("文件路径")
sheet = workbook.worksheets[1]
#1.获取 第n行 &第n列 的单元格(起始位置是1)
cell = sheet.cell(1,1)
print(cell)
print("内容",cell.value)
print("样式",cell.style)
print("字体",cell.font)
print("排序",cell.alignment)
#2.根据Excel的位置获取数据
cell_al = sheet["A1"]
print(cell_al.value)
#3.获取第n行的单元格
cell_list = sheet[1]
for cell in sheet[1]:
print(cell.value)
#4.循环获取所有行数据
for row in sheet.rows:
print(row[0].value)
#5.循环获取所有列
for col in sheet.columns:
print(col[0].value)
3.合并的单元格
from openpyxl import load_workbook
workbook = load_workbook("文件路径")
sheet = workbooks[2]
#1.获取单元格
c1 = sheet.cell(1,1)
print(c1) #<cell "Sheet1".A1>
print(c1.value) #用户信息
#第一个和第二个合并单元格,第一个显示值,第二个显示null
c1 = sheet.cell(1,2)
print(c1) #<MergedCell "Sheet1".B1>
print(c1.value) #None
4.Excel
-
原Excel文件基础上写内容
from openpyxl import load_workbook
workbook = load_workbook("文件路径")
sheet = worksheets[0]
#1.找到单元格,并修改单元格的内容
cell = sheet.cell(1,1)
cell.value = "值"
#将excel文件保存到p2.xlsx文件中
workbook.save("文件路径") -
新创建Excel文件写内容
from openpyxl import workbook
#创建excel且默认会创建一个sheet(名称为sheet)
workbook = workbook.Workbook()
sheet = worksheets[0]
#找到单元格,并修改单元格的内容
cell = sheet.cell(1,1)
cell.value = "值"
#将excel文件保存到p2.xlsx文件中
workbook.save("文件路径")
from openpyxl import workbook workbook = workbook.workbook() #1.修改sheet名称 sheet = worksheets[0] sheet.title = "值" workbook.save("p2.xlsx") #2.创建sheet并设置sheet颜色 sheet = workbook.create_sheet("工作计划",0)#零代表位置 sheet.sheet_properties.tabColor = "1072BA" workbook.save("P2.xlsx") #3.默认打开的sheet workbook.active = 0 workbook.save("p2.xlsx") #4.拷贝sheet sheet = workbook.create_sheet("工作计划") sheet.sheet_properties.tabColor = "1072BA" new_sheet = workbook.copy_worksheet(workbook["Sheet"]) new_sheet.title = "新的计划" workbook.save("p2.xlsx") #5.删除sheet del workbook["用户列表"] workbook.save("files/p2.xlsx")
5.操作单元格
from openpyxl import load_workbook from openpyxl.styles import Alignment,Border,Side,Font,PatternFill,GradientFill workbook = load_workbook("文件") sheet = workbook.worksheet[1] #1.获取某个单元格,修改值 cell = sheet.cell(1,1) cell.value = "开始" #2.获取某个单元格,修改值 sheet["V3"] = "Alex" vb.save("p2.xlsx") #3.获取某些单元格,修改值 cell_list = sheet[B2:C3] #b2到c3拿到的值是(b2,b3,c2,c3) for row in cell_list: for cell in row : cell.value = "新的值" vb.save("p2.xlsx") #4.对齐方式 cell = sheet.cell(1,1) #herizontal,水平方向对齐方式:“general”,"left","center"句中,"right","fill","justify","centercontinuous","distributed" #vertieal,垂直方向对齐方式:"top","center","bottom","justify","distributed" #text_rotation,旋转角度 #wrap_text,是否自动换行 cell.alignment = Alignment(horizontal="center",vertical="distributed",text_rotation=45,wrap_text=True) wb.save("p2.xlsx") #5.边框 #side的style有如下:dashDot,dashDotDot,dashed,dotted,double,hair,mediun,mediumDashDot,mediumDashDotdot,mediumDashed,slantDashDot,thick,thin. sell = sheet.cell(9.2) cell.border = Border( top = Side(style="thin",color="FFB6C1"), bottom=Side(style="dashed",color="9932cc"), left=Side(style="dashed",color="9932cc"), right=Side(style="dashed",color="9932cc"), diagonal=Side(style="thin",color="483D8B"),#对角线 diagonalUp=True,#左下-右上 #diagonalDown=True #左上-右下 ) wb.save("p2.xlsx") #6.字体 cell = sheet.cell(5,1) cell.font = Font(name="微软雅黑",size=45,color="ff0000",underline="single") #underline下划线 wb.save("p2.xlsx") #7.背景色 cell = sheet.cell(5,3) cell.fill = PatternFill("solid",fgColor="99ccff") wb.save("p2.xlsx") #8.渐变背景色 cell = sheet.cell(5,5) cell.fill = GradientFill("linear",stop=("FFFFFF","99ccff","000000"))#从左到右的三个颜色 wb.save("p2.xlsx") #9.宽高(索引从1开始) sheet.row_idmensions[1].height = 50 sheet.column_dimensions["E"].width = 100 wb.save("p2.xlsx") #10.合并单元格 sheet.merge_cells("B2:D8") #这是两种 sheet.merge_cells(start_row=15,start_column=3,end_row=18,end_column=8) wb.save("p2.xlsx") #这是解除合并单元格的 sheet.unmerge_cells("B2:D8") wb.save("p2.xlsx") #11.写入公式 sheet = wb.worksheets[3] sheet["D1"] = "合计" sheet["D2"] = "=B2*C2" wb.save("p2.xlsx") sheet = wb.worksheets[3] sheet["D3"] = "=sum(B3,C3)" wb.save("p2.xlsx") #12.删除 #idx,要删除的索引位置 #anount,从索引位置开始要删除的个数(默认为1) sheet.delete_rows(idx=1,anount=2) sheet.delete_cols(idx=1,anount=3) wb.save("p2.xlsx") #13.插入 sheet.insert_rows(idx=5,anount=10) sheet.insert_cols(idx=3,anount=2) wb.save("p2.xlsx") #14.循环写内容 sheet = wb["Sheet"] cell_range = sheet["A1:C2"] for row in cell_range: for cell in row: cell.value = "xx" #第5行第1列到第7行第10列 for row in sheet.iter_rows(min_row=5,min_col=1,max_col=7,max_row=10): for cell in row: cell.value = "oo" wb.save("p2.xlsx") #15.移动 #将H2:J10范围的数据,向右移动15个位置、向上移动1个位置 sheet.nove_range("H2:J10",rows=-1,cols=15) wb.save("p2.xlsx") #16.打印区域 sheet.print_area = "A1:D200" wb.save("p2.xlsx") #17.打印时,每个页面的固定表头 sheet.print_title_cols = "A:D" sheet.print_title_rows = "1:3" wb.save("p2.xlsx")
6.作业
-
补充代码:实现去网上获取指定地区的天气信息,并写入excel中。
import requests while True: city = input("请输入城市(Q/q退出):") if city.upper()=="Q": break url = "http://ws.webxml.com.cn//webServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName={}".format(city) res = requests.get(url=url) print(res.text) #1.提取xml格式中的数据 #2.为每个城市创建一个sheet,并将获取的xml格式中的数据写入到excel中。 from openpyxl import load_workbook workbook = load_workbook("a1.xlsx") sheet = workbook.create_sheet("工作计划") sheet.title = city sheet = workbook[city] cell=sheet["A1:AH1"] text=str(res.text)[:-16].split("<string>")[1:] for i in range(len(text)): cell[0][i].value = text[i][:-13] print(text[i][:-13]) workbook.save("a1.xlsx")
-
读取ini文件内容,按照规则写入到Excel中
[mysqld] datadir=/var/lib/mysql socket=py-mysql-bin log-bin=py-mysql-bin character-set-server=utf8 collation-server=utf8_general-ci log-error=/var/log/mysqld.log symbolic-links=0 [mysqld_safe] log-error=/var/log/mariadb/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid [client] default-character-set=utf8 #1.读取ini格式的文件,并创建一个excel文件,并且每个节点创建一个sheet,然后将节点下的键值写入到excel中。 #2.首行,字体白色&单元格背景色蓝色 #3.内容均句中 #4.边框
3.Matplotlib
1.安装 Matplotlib
python -m pip install --user matplotlib
2.绘制简单的折线图
#调用模块并起一个别名为 plt import matplotlib.pyplot as plt #春秋来春秋去 squares = [1,4,9,16,25] #这个函数可在一张图片中绘制一个或多个图表。变量fig表示整张图片。变量ax表示图片中的各个图表。 fig,ax = plt.subplots() #尝试根据给定的数据以有意义的方式绘制图表。 ax.plot(squares) #打开matplotlib查看其并显示绘制的图表。 plt.show()
3.修改标签文字和线条粗细
#决定绘制的线条粗细。 ax.plot(squares,linewidth=3) #表标题,字号24 ax.set_title("平方数",fontsize = 24) #x轴标题,字号14 ax.set_xlabel("值",fontsize=14) #y轴标题,字号14 ax.set_ylabel("值的平方",fontsize=14)
4.校正图形
input_values = [1,2,3,4,5] #因为同时提供了输入值和输出值,plot无须对输出值的生成做出假设 ax.plot(input_values,squares,linewidth=3)
5.使用内置样式
plt.style.available #查看样式 plt.style.use("seaborn") #网格样式
6.项目
#调用模块并起一个别名为 plt import matplotlib.pyplot as plt #春秋来春秋去 squares = [1,4,9,16,25] input_values = [1,2,3,4,5] #这个函数可在一张图片中绘制一个或多个图表。变量fig表示整张图片。变量ax表示图片中的各个图表。 fig,ax = plt.subplots() #因为同时提供了输入值和输出值,plot无须对输出值的生成做出假设 ax.plot(input_values,squares,linewidth=3) #尝试根据给定的数据以有意义的方式绘制图表。 #决定绘制的线条粗细。 #表标题,字号24 ax.set_title("平方数",fontsize = 24) #x轴标题,字号14 ax.set_xlabel("值",fontsize=14) #y轴标题,字号14 ax.set_ylabel("值的平方",fontsize=14) #打开matplotlib查看其并显示绘制的图表。 plt.show()
7.使用scatter绘制散点图并设置样式
import matplotlib.pyplot as plt plt.style.use("seaborn") fig.ax = plt.subplots() #调用scatter()并使用参数s设置绘制图形时使用的点的尺寸。 ax.scatter(2,4 ,s=200) #设置图表标题并给坐标轴加上标签。 #表标题,字号24 ax.set_title("平方数",fontsize = 24) #x轴标题,字号14 ax.set_xlabel("值",fontsize=14) #y轴标题,字号14 ax.set_ylabel("值的平方",fontsize=14) #设置刻度标记的大小。 ax.tick_params(axis="both",which="major",labelsize=14) plt.show()
8.使用scatter绘制一系列点
import matplotlib.pyplot as plt x_values = [1,2,3,4,5] y_values = [1,4,9,16,25] plt.style.use("seaborn") fig.ax = plt.subplots() #调用scatter()并使用参数s设置绘制图形时使用的点的尺寸。 ax.scatter(x_values,y_values ,s=100) #设置图表标题并给坐标轴加上标签。 #表标题,字号24 ax.set_title("平方数",fontsize = 24) #x轴标题,字号14 ax.set_xlabel("值",fontsize=14) #y轴标题,字号14 ax.set_ylabel("值的平方",fontsize=14) #设置刻度标记的大小。 ax.tick_params(axis="both",which="major",labelsize=14) plt.show()
9.自动计算数据
import matplotlib.pyplot as plt x_values = range(1,1001) y_values = [x**2 for x in x_values] plt.style.use("seaborn") fig.ax = plt.subplots() #调用scatter()并使用参数s设置绘制图形时使用的点的尺寸。 ax.scatter(x_values,y_values ,s=10) #设置图表标题并给坐标轴加上标签。 #表标题,字号24 ax.set_title("平方数",fontsize = 24) #x轴标题,字号14 ax.set_xlabel("值",fontsize=14) #y轴标题,字号14 ax.set_ylabel("值的平方",fontsize=14) #设置刻度标记的大小。 ax.tick_params(axis="both",which="major",labelsize=14) #设置每个坐标轴的取值范围 ax.axis([0,1100,0,1100000]) plt.show()
10.自定义颜色
import matplotlib.pyplot as plt x_values = range(1,1001) y_values = [x**2 for x in x_values] plt.style.use("seaborn") fig.ax = plt.subplots() #调用scatter()并使用参数s设置绘制图形时使用的点的尺寸,c是颜色。 ax.scatter(x_values,y_values ,c = "red",s=10) #设置刻度标记的大小。 ax.tick_params(axis="both",which="major",labelsize=14) #设置每个坐标轴的取值范围 ax.axis([0,1100,0,1100000]) plt.show()
11.使用颜色渐变
import matplotlib.pyplot as plt x_values = range(1,1001) y_values = [x**2 for x in x_values] plt.style.use("seaborn") fig.ax = plt.subplots() #调用scatter()并使用参数s设置绘制图形时使用的点的尺寸。c是颜色的透明度,cmap=plt.cm.Blues是告诉pyplot使用什么渐变颜色 ax.scatter(x_values,y_values,c = y_values,cmap=plt.cm.Blues ,s=10) #设置图表标题并给坐标轴加上标签。 #表标题,字号24 ax.set_title("平方数",fontsize = 24) #x轴标题,字号14 ax.set_xlabel("值",fontsize=14) #y轴标题,字号14 ax.set_ylabel("值的平方",fontsize=14) #设置刻度标记的大小。 ax.tick_params(axis="both",which="major",labelsize=14) #设置每个坐标轴的取值范围 ax.axis([0,1100,0,1100000]) #这个方法是用来保存图片的,第一个参数是图片的名称,第二个是去掉多余的白边, plt.savefig("squares_plot.png",bbox_inches="tight") plt.show()
12.隐藏坐标轴
import matplotlib.pyplot as plt x_values = [1,2,3] y_values = [1,2,3] plt.style.use("seaborn") fig.ax = plt.subplots() #隐藏xy轴 ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False)
标签:plt,sheet,openpyxl,matplotlib,cell,workbook,ax,easygui,14 来源: https://www.cnblogs.com/fxy1024/p/16272515.html