其他分享
首页 > 其他分享> > 第6章 easygui_openpyxl_matplotlib

第6章 easygui_openpyxl_matplotlib

作者:互联网

第6章

1.easygui

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)

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

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.作业

  1. 补充代码:实现去网上获取指定地区的天气信息,并写入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")	
  2. 读取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