python 保存的模型为什么无法打开_python,tkinter打开excel文档修改保存

tkinter 是 Python 的标准 GUI 库。内置到 python 的安装包中,可以直接import使用。

学习用tkinter 组件treeview显示excel内容再通过点击修改保存回去新工作表。

除了tkinter的内容,还涉及到excel文档的操作。

这里我用到openpyxl库,这是第三方库要pip安装。在windows系统下边学边写,这里作一个记录总结(上班划水)。

开始

开始时设想是打开一个界面里面有打开,保存按钮。点开选择文档后内容显示到界面上,然后在treview内双击修改,改完点保存按钮保存。

当中遇到一些问题,没找到办法解决,就换了另一个方法(绕了一下)。实现打开修改保存,下面会说到。

开写,打开窗口

首先要显示个窗口。上面说到的两个按钮选文件后显示内容到上面没找到解决方法。我做的是先一个窗口显示打开按钮,选中文档后再打开一个显示内容的窗口。

import tkinter as tkfrom tkinter import filedialogdef openbook():    fpath=filedialog.askopenfilename()    print(fpath)    if fpath:        passwino=tk.Tk()wino.geometry('200x100')btno=tk.Button(wino,text='打开', command=openbook)btno.pack(side=tk.TOP,expand = tk.YES)wino.mainloop()

38f348a765569681713ccb2cf7d2cb40.gif

tkinter库里的filedialog打开选择文件对话框。

geometry()窗口大小

那么现在就清楚了,在openbook里面pass写一个函数替换。

打开excel

(只对有一行标题的内容,看下面文档demo图片)

def win_openxls(fpath):    global wino    wino.destroy()    savepath=fpath    w=xl.load_workbook(fpath)    name=w.sheetnames    print(name)    sheet=w[name[0]]    n=sheet.max_row    col=sheet.max_column    xlarr=[]    for r in sheet.rows:        arr=[]    for cell in r:            arr.append(cell.value)        xlarr.append(arr)     win=tk.Tk()    win.geometry('800x400')    colname=[]    for c in range(col):        colname.append(c)    tree=ttk.Treeview(win,show='headings',columns=colname,selectmode = 'browse')#单行选中模式    for c in range(col):        tree.column(c,width=90,anchor='center')        tree.heading(c,text=xlarr[0][c])#显示标题    titles=xlarr[0]    del(xlarr[0])#删了第一个,不删显示内容第一行与标题重复    for i in range(n-1):        tree.insert('',i,values=xlarr[i])#显示内容    tree.pack(side=tk.TOP,fill=None,)    btn1=tk.Button(win,text='保存', command=savebook)    btn1.pack(side=tk.BOTTOM,expand = tk.YES)    #tree.bind('',viewclick)#后面用到,监控鼠标双击    win.mainloop()

这个函数是打开文档内容显示到界面上。替换openbook的pass。

文档内容demo这样的

2b42d10b1829119aa09826190fd90be1.png

运行选择这个文档后

9b53b0ade45b7a925441d4ea675f1883.png

wino.destroy()#关闭选择窗

sheet=w[name[0]]#读取Sheet1工作表内容

n=sheet.max_row#取内容行数

col=sheet.max_column#取内容列数

xlarr.append(arr)#列表保存excel内容

colname.append(c)#列表保存用到treeview标题

还有些在代码注释了。

编辑内容

用到上面注释掉的监控鼠标双击。

tree.bind('',viewclick)

双击后viewclick函数处理,弹出一个窗修改再保存回去。

def viewclick(event):    global nwin    global tree    global enty    global sitem    global colint    for item in tree.selection():        ttext=tree.item(item,'values')        sitem=item    col=tree.identify_column(event.x)    colint=int(str(col.replace('#','')))        nwin=tk.Tk()#编辑窗口    nwin.geometry("260x100")    label1 = tk.Label(nwin, text="修改:")    label1.pack(side=tk.LEFT, fill=None)    enty=tk.Text(nwin,width=300,height=300,wrap = tk.WORD)    enty=tk.Entry(nwin)    enty.pack(side=tk.LEFT, fill=None)    btn=tk.Button(nwin,text='确认', command=getv)    btn.pack(side=tk.LEFT,padx=6,ipadx=6)    enty.insert('end',ttext[colint-1])#编辑框显示值    openwin.append(nwin)      if len(openwin)>1:        openwin.pop(0).destroy()    nwin.protocol('WM_DELETE_WINDOW', initopenwin)#绑定时件,关闭窗清除变量值    nwin.mainloop()

tree.selection()#取到items(选了那行)

tree.item(item,'values')#选中行的所有值

tree.identify_column(event.x)#event.x选中的x坐标,identify_column()返回坐标列标如:#1 表示第1列。这里再replace就取里面的数字。

openwin.pop(0).destroy()#防止打开多个编辑窗口

取值函数

def getv():    global nwin    global enty    global tree    global sitem    global colint    global openwin    editxt=enty.get()    tree.set(sitem,(colint-1),editxt)    openwin=[]    nwin.destroy()

取到修改的值

tree.set(sitem,(colint-1),editxt)#更新修改后显示。

保存

def savebook():    global w    global tree    global titles    global savepath        ws=w.create_sheet('change1')    ws.append(titles)    for itm in tree.get_children():        ws.append(tree.item(itm)['values'])        w.save(savepath)     messagebox.showinfo('提示','保存成功') 

w.create_sheet('change1')#创建工作表

ws.append(titles)#添加首行

tree.get_children()#取到treeview标题下面的内容

w.save(savepath)#保存

演示

9aca526d98a7caf96a61e63e10a00b60.gif

c820b63012bab866acdf75ed5348ddd8.gif

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python成绩分析系统是基于tkinter库开发的一款用于分析学生成绩的应用程序。该系统的设计目标是帮助教师和学生更加高效地了解学生的学习情况。 首先,系统具备学生信息管理的功能。教师可以通过输入学生的基本信息,如学生ID、姓名、性别等,将学生信息保存到系统中,方便后续的成绩分析和查询。 其次,系统能够录入学生的成绩信息。教师可以依次输入学生的各科成绩,并自动计算学生的总分和平均分。系统还可以根据输入的成绩数据生成成绩单,用于展示学生的各科成绩和总成绩,并可以将成绩单保存到本地文件中。 此外,系统还具备成绩分析的功能。通过对学生的成绩数据进行统计和分析,教师和学生可以更加直观地了解学生的学习情况。系统可以生成各科成绩的柱状图、折线图等图表,用于展示学生的学习进步和薄弱科目。教师可以根据图表数据进行针对性教学,帮助学生提高成绩。 最后,系统提供了成绩查询的功能。教师和学生可以通过输入学生的ID或姓名,快速查询到学生的成绩和相关信息。这样,教师可以根据学生的查询结果,给予他们及时的学习指导和鼓励,而学生也可以通过查询自己的成绩,及时了解自己的学习情况。 综上所述,Python成绩分析系统使用tkinter库开发,具备学生信息管理、成绩录入、成绩分析和成绩查询等功能,可帮助教师和学生更好地了解学生的学习情况,提高学习效果。 ### 回答2: Python成绩分析系统基于tkinter图形化用户界面开发,使用户能够方便地对学生成绩进行分析和统计。该系统主要包括以下功能: 1. 成绩录入:用户可以通过系统界面输入学生的姓名和各科成绩,并保存到系统的数据库中。 2. 成绩查询:系统提供学生姓名或学号查询功能,用户可以输入相关信息进行查询,系统会从数据库中检索并显示出相应学生成绩。 3. 成绩分析:系统会根据学生的成绩数据,进行各科成绩的平均值、最高分、最低分等统计分析。并通过可视化的方式展示成绩分布图表,帮助用户直观地了解学生的成绩情况。 4. 成绩排名:系统会按照学生的总分或各科成绩进行排名,并根据排名结果进行相应的提示和提醒,帮助用户更好地了解学生的学习表现。 5. 成绩导出:系统支持将学生成绩数据导出为Excel或CSV等常见格式,方便用户进行后续的数据分析和处理。 6. 用户管理:系统提供用户管理功能,管理员可以添加、删除和修改用户的权限,确保系统安全可靠。 总之,Python成绩分析系统基于tkinter图形界面开发,提供了成绩录入、成绩查询、成绩分析、成绩排名、成绩导出和用户管理等功能,为用户提供了便捷、直观的学生成绩管理工具。 ### 回答3: Python成绩分析系统是一个基于tkinter库开发的学生成绩分析工具。它能够帮助教师或学生对学生的成绩进行全面评估和分析。 该系统的主要特点包括: 1. 学生信息管理:系统允许将学生的基本信息(如姓名、学号、班级等)导入系统中,并能够实时更新和管理。管理员能够对学生信息进行增、删、改、查等操作。 2. 成绩录入:教师可以在系统中录入学生的成绩,包括考试成绩、平时成绩等。成绩支持多种形式的输入(如手工输入、导入Excel等),方便教师快速录入。 3. 成绩分析:系统能够根据录入的成绩数据,自动生成各种成绩统计报表和图表。这些报表和图表可以直观地展示学生的整体情况和各项指标的分布情况,帮助教师全面了解学生的学习情况。 4. 数据可视化:系统支持将成绩数据进行可视化展示,通过柱状图、折线图等图表形式展示学生的成绩趋势和变化,从而帮助教师和学生更好地分析和评估学习进程。 5. 自定义分析功能:系统提供了自定义分析功能,教师可以根据自己的需求定义各项指标的权重和标准,并基于这些标准对学生进行评估。同时,系统也支持基于不同的分析模型进行成绩评估和排名。 总之,Python成绩分析系统tkinter是一个功能强大、易于使用的学生成绩分析工具,可以帮助教师和学生更好地了解和分析学生的学习状况,从而促进学生的进步和提高教学质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值