第6章 easygui_openpyxl_matplotlib(Chapter 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 tt.msgbox('Hello','easy','Yes','wjx.png')

3.双项选择

ccbox()     #双项选择ccbox(msg=' ', title=' ', choices=('  ', '  '), image=None)msg:#需要显示的内容title:#窗口的标题choices:#元组形式,两个选项显示的内容image:#显示图片(需要路径)#返回值:#第一个按钮返回True#第二个按钮返回False#右上角×号返回Noneimport easygui as tt.ccbox('下面水果,你喜欢哪一个?','选择',('苹果','橘子'))

4.多项选择

buttonbox()   #多项选择buttonbox(msg=' ', title=' ', choices=('Button1', 'Button2', 'Button3'), image=None, root=None)msg:#需要显示的内容title:#窗口的标题choices:#元组形式或列表的形式,多个选项显示的内容image:#显示图片(需要路径)#返回值:#点击按钮返回按钮的信息#右上角×号返回Noneimport easygui as ttuple = ('石头','剪刀','布')t.buttonbox('选择石头剪刀布','game',tuple)

5.可选的下拉列表

choicebox()与multchoicebox()——#可选的下拉列表choicebox(msg=' ', title=' ', choices=())msg:#需要显示的内容title:#窗口的标题choices:#元组形式或列表的形式,多个选项显示的内容#返回值:#点击显示的选项,返回选项的信息#点击Cancel按钮返回None#右上角×号返回Noneimport easygui as tlist = ['石头','剪刀','布']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 ts = 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 ts = t.integerbox('你多大了','年龄','18',0,120)print(s)

8.多选项输入

mulenterbox()  #多选项输入multenterbox(msg=' ', title=' ', fields=(), values=())msg:#需要显示的内容title:#窗口的标题fields:#填写条目名称values:#默认内容#返回值:###输入内容后返回值为输入的内容,以列表的形式#点击Cancel按钮返回None##右上角×号返回Noneimport easygui as tmessage = ['学号', '姓名','性别','年龄','院系','入学时间']s = student = t.multenterbox('输入学生的信息:', '信息录入', message)print(s)

9.密码输入框

passwordbox()#密码输入框(不显示)passwordbox(msg=' ', title=' ', default=' ', image=None, root=None)msg:#需要显示的内容title:#窗口的标题default:#关键字定义的是文本框默认值image:#显示图片(需要路径)#返回值:#输入内容后返回值为输入的字符串##点击Cancel按钮返回None#右上角×号返回Noneimport easygui as ts = t.passwordbox('输入密码', '密码')print(s)

10.多项显示

multpasswordbox() #多项显示multpasswordbok(msg=' ', title=' ',fields=(),values=())msg:#需要显示的内容title:#窗口的标题fields:#填写条目名称,最后一栏显示为*号values:#默认内容#返回值:#输入内容后返回值为输入的内容,以列表的形式#点击Cancel按钮返回None#右上角×号返回Noneimport easygui as ts = 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.sheetnamesprint(name_list)#2.根据名称获取sheetsheet_object = workbook["sheetname"]print(sheet_object)#3.根据索引获取sheetsheet = worksheets[0]#4.循环获取所有的sheetfor sheet_object in wcrkbook:    print(sheet_object)#不加.sheetnames内部也是自动获取sheetnames的    

2.sheet中单元格的数据

from openpyxl import load_workbookworkbook = 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_workbookworkbook = load_workbook("文件路径")sheet = workbooks[2]#1.获取单元格c1 = sheet.cell(1,1)print(c1) #<cell "Sheet1".A1>print(c1.value) #用户信息#第一个和第二个合并单元格,第一个显示值,第二个显示nullc1 = sheet.cell(1,2)print(c1) #<MergedCell "Sheet1".B1>print(c1.value) #None

4.Excel

  • 原Excel文件基础上写内容
    from openpyxl import load_workbookworkbook = load_workbook(“文件路径”)sheet = worksheets[0]#1.找到单元格,并修改单元格的内容cell = sheet.cell(1,1)cell.value = “值”#将excel文件保存到p2.xlsx文件中workbook.save(“文件路径”)
from openpyxl import load_workbookworkbook = 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#创建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(““)[1:]
    for i in range(len(text)):
    cell[0][i].value = text[i][:-13]
    print(text[i][:-13])
    workbook.save(“a1.xlsx”)

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.边框

[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)
————————

Chapter 6

1.easygui

  • easygui是Python的一个图形化界面的库。

1. Download module

pip install easygui

2. Message pop-up

msgbox()   #消息弹窗msgbox(msg=' ', title=' ', ok_button=' ', image=None, root=None)msg:#需要显示的内容title:#窗口的标题ok_button:#按钮上显示的信息image:#显示图片(需要路径)#返回值:#按钮信息#右上角×号返回None#########################import easygui as tt.msgbox('Hello','easy','Yes','wjx.png')

3. Double choice

ccbox()     #双项选择ccbox(msg=' ', title=' ', choices=('  ', '  '), image=None)msg:#需要显示的内容title:#窗口的标题choices:#元组形式,两个选项显示的内容image:#显示图片(需要路径)#返回值:#第一个按钮返回True#第二个按钮返回False#右上角×号返回Noneimport easygui as tt.ccbox('下面水果,你喜欢哪一个?','选择',('苹果','橘子'))

4. Multiple choice

buttonbox()   #多项选择buttonbox(msg=' ', title=' ', choices=('Button1', 'Button2', 'Button3'), image=None, root=None)msg:#需要显示的内容title:#窗口的标题choices:#元组形式或列表的形式,多个选项显示的内容image:#显示图片(需要路径)#返回值:#点击按钮返回按钮的信息#右上角×号返回Noneimport easygui as ttuple = ('石头','剪刀','布')t.buttonbox('选择石头剪刀布','game',tuple)

5. Optional drop-down list

choicebox()与multchoicebox()——#可选的下拉列表choicebox(msg=' ', title=' ', choices=())msg:#需要显示的内容title:#窗口的标题choices:#元组形式或列表的形式,多个选项显示的内容#返回值:#点击显示的选项,返回选项的信息#点击Cancel按钮返回None#右上角×号返回Noneimport easygui as tlist = ['石头','剪刀','布']t.choicebox('选择石头剪刀布','game',list)multchoicebox()#功能同样,只是他可以提供多选,拥有全选与全清按钮。#返回值:#多选的返回值是多选的文本列表#点击Cancel按钮返回None#右上角×号返回None

6. Text input box

enterbox()    #文本输入框enterbox(msg='  ', title=' ', default=' ', strip=True, image=None, root=None)msg:#需要显示的内容title:#窗口的标题default:#关键字定义的是文本框默认值strip:#的值为True时会自动忽略输入的首尾空格,False则相反image:#显示图片(需要路径)#返回值:##输入内容后返回值为输入的字符串#点击Cancel按钮返回None#右上角×号返回None        import easygui as ts = t.enterbox('What do you want to say ?','想说什么','Who are you ?')print(s)

7. Digital input

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 ts = t.integerbox('你多大了','年龄','18',0,120)print(s)

8. Multi option input

mulenterbox()  #多选项输入multenterbox(msg=' ', title=' ', fields=(), values=())msg:#需要显示的内容title:#窗口的标题fields:#填写条目名称values:#默认内容#返回值:###输入内容后返回值为输入的内容,以列表的形式#点击Cancel按钮返回None##右上角×号返回Noneimport easygui as tmessage = ['学号', '姓名','性别','年龄','院系','入学时间']s = student = t.multenterbox('输入学生的信息:', '信息录入', message)print(s)

9. Password input box

passwordbox()#密码输入框(不显示)passwordbox(msg=' ', title=' ', default=' ', image=None, root=None)msg:#需要显示的内容title:#窗口的标题default:#关键字定义的是文本框默认值image:#显示图片(需要路径)#返回值:#输入内容后返回值为输入的字符串##点击Cancel按钮返回None#右上角×号返回Noneimport easygui as ts = t.passwordbox('输入密码', '密码')print(s)

10. Multiple displays

multpasswordbox() #多项显示multpasswordbok(msg=' ', title=' ',fields=(),values=())msg:#需要显示的内容title:#窗口的标题fields:#填写条目名称,最后一栏显示为*号values:#默认内容#返回值:#输入内容后返回值为输入的内容,以列表的形式#点击Cancel按钮返回None#右上角×号返回Noneimport easygui as ts = t.multpasswordbox('请输入账号密码', '登录',['用户名','账号','密码'],['123','123','123'])print(s)
  • 其他GUI界面库:Tkinter、wxPython、PyGTK、PyQt、PySide等。

2.openpyxl

  • Installing third-party modules
pip install openpyxl

1.sheet

from openpyxl import load_workbook#打开excel文件workbook = load_workbook("文件名")#1.获取所有的sheet名称name_list = workbook.sheetnamesprint(name_list)#2.根据名称获取sheetsheet_object = workbook["sheetname"]print(sheet_object)#3.根据索引获取sheetsheet = worksheets[0]#4.循环获取所有的sheetfor sheet_object in wcrkbook:    print(sheet_object)#不加.sheetnames内部也是自动获取sheetnames的    

2. Data of cells in sheet

from openpyxl import load_workbookworkbook = 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. Merged cells

from openpyxl import load_workbookworkbook = load_workbook("文件路径")sheet = workbooks[2]#1.获取单元格c1 = sheet.cell(1,1)print(c1) #<cell "Sheet1".A1>print(c1.value) #用户信息#第一个和第二个合并单元格,第一个显示值,第二个显示nullc1 = sheet.cell(1,2)print(c1) #<MergedCell "Sheet1".B1>print(c1.value) #None

4.Excel

  • 原Excel文件基础上写内容
    from openpyxl import load_workbookworkbook = load_workbook(“文件路径”)sheet = worksheets[0]#1.找到单元格,并修改单元格的内容cell = sheet.cell(1,1)cell.value = “值”#将excel文件保存到p2.xlsx文件中workbook.save(“文件路径”)
from openpyxl import load_workbookworkbook = 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#创建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. Operation cell

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. Operation

  • 补充代码:实现去网上获取指定地区的天气信息,并写入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(““)[1:]
    for i in range(len(text)):
    cell[0][i].value = text[i][:-13]
    print(text[i][:-13])
    workbook.save(“a1.xlsx”)

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.边框

[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. Draw a simple line chart

#调用模块并起一个别名为 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. Modify label text and line thickness

#决定绘制的线条粗细。
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. Correct graphics

input_values = [1,2,3,4,5]
#因为同时提供了输入值和输出值,plot无须对输出值的生成做出假设
ax.plot(input_values,squares,linewidth=3)

5. Use built-in style

plt.style.available #查看样式
plt.style.use("seaborn") #网格样式

6. Project

#调用模块并起一个别名为 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. Use scatter to draw the scatter chart and set the style

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. Use scatter to draw a series of points

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. Automatically calculate data

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. Custom colors

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. Use color gradient

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. Hide axis

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)