问题遇到的现象和发生背景
想制作一个excel表格小工具,但是在进行删除时出现了错误
用代码块功能插入代码,请勿粘贴截图
import tkinter
from tkinter import *
import os
import sys
import time
from tkinter import messagebox
import pymongo
import self
import xlrd
import xlwt
import pandas as pd
from openpyxl.reader.excel import load_workbook
from xlrd import book
#app = Tk()
class A(object):
def __init__(self,master):
master.geometry("600x600")
master.title("文件")
heading = Label(text="Excel工作表", fg="black", bg="yellow", width="500", height="3", font="10")
heading.pack()
ID_text = Label(master,text="ID")
class_text = Label(master,text="班级")
names_text = Label(master,text="姓名")
score_text = Label(master,text='成绩')
delete_text = Label(master,text='删除')
ID_text.place(x=15, y=70)
class_text.place(x=15, y=140)
names_text.place(x=15, y=210)
score_text.place(x=15, y=280)
delete_text.place(x=15, y=350)
self.ID = StringVar()
self.classing = StringVar()
self.thename = StringVar()
self.score = StringVar()
self.delet = StringVar()
self.ID_entry = Entry(master,textvariable=self.ID, width="30")
classing_entry = Entry(master,textvariable=self.classing, width="30")
thename_entry = Entry(master,textvariable=self.thename, width="30")
score_entry = Entry(master,textvariable=self.score, width="30")
delete_entry = Entry(master,textvariable=self.delet, width="30")
self.ID_entry.place(x=15, y=100)
classing_entry.place(x=15, y=180)
thename_entry.place(x=15, y=240)
score_entry.place(x=15, y=300)
delete_entry.place(x=15, y=370)
button = Button(master, text="创建", command=self.create_excel, width="30", height="2", bg="grey")
button.place(x=15, y=420)
button1 = Button(master, text="删除", command=self.dellete_excel, width="30", height="2", bg="grey")
button1.place(x=300, y=420)
def create_excel(self):
self.ID_info = self.ID.get()
self.class_info = self.classing.get()
self.thename_info = self.thename.get()
self.score_info = self.score.get()
global name
localTime = time.strftime("%Y-%m-%d-%H", time.localtime())
self.name = localTime + '.xls'
if os.path.isfile(self.name):
tkinter.messagebox.showinfo("提示", "文件已经被创建")
# tkinter.messagebox.showinfo("提示", "添加成功!")
y = os.system(self.name)
print(y)
if not os.path.exists(self.name):
df = {"ID": [self.ID_info],
"班级": [self.class_info],
"姓名": [self.thename_info],
"成绩": [self.score_info]}
df = pd.DataFrame(df)
df.to_excel(self.name, sheet_name="Sheet1", index=False, engine="openpyxl")
print("Done!")
# os.system(r"touch{}".format(name))
#file = open(name, "a")
#file.write("ID" + "\t" + "班级" + "\t" + "姓名" + "\t" + "成绩" + "\n")
#file.write("0xx" + "\t" + "xxxx" + "\t" + "xxx" + "\t" + "xxx" + "\n")
#file.write(ID_info)
#file.write("\t")
#file.write(class_info)
#file.write("\t")
#file.write(thename_info)
#file.write("\t")
#file.write(score_info)
#file.write("\n")
tkinter.messagebox.showinfo("提示", "创建成功!")
else:
#with pd.ExcelWriter(name,mode="a",engine="openpyxl") as writer:
df1 = pd.read_excel(self.name)
# df1 = pd.DataFrame(columns=["ID", "班级", "姓名", "成绩"])
df = {"ID": [self.ID_info],
"班级": [self.class_info],
"姓名": [self.thename_info],
"成绩": [self.score_info]}
df = pd.DataFrame(df)
res = pd.concat([df1, df], axis=0)
# index=['ID','班级','姓名','成绩']
# file = openpyxl.load_workbook(excel,'a')
res.to_excel(self.name, sheet_name="Sheet1", index=False, engine="openpyxl")
print("Done!")
#file = open(name, "a")
#file.write(ID_info)
#file.write("\t")
#file.write(class_info)
#file.write("\t")
#file.write(thename_info)
#file.write("\t")
#file.write(score_info)
#file.write("\n")
def dellete_excel(self):
file_path = self.name
data = pd.read_excel(self.name)
data1 = data.drop(labels="ID",axis=0)
data1.to_excel(file_path, sheet_name="Sheet1", index=False)
#delete_info = self.delet.get()
#self.ID_entry.delete(0,'end')
#df = pd.read_excel(self.name)
#self.df.drop([self.ID_info])
#df.dropna(axis=0)
#df.dropna(axis=1)
#if self.ID_info:
#df.drop(self.ID_info, axis=0,inplace=True)
#df.replace(self.ID_info, "")
self.df.to_excel(self.name)
print("Done!")
# file.close()
# sys.exit(0)
def main():
root = Tk()
app = A(root)
root.mainloop()
if __name__ == "__main__":
main()
运行结果及报错内容
Exception in Tkinter callback
Traceback (most recent call last):
File "E:\Python\python3.1.8\lib\tkinter_init_.py", line 1921, in call
return self.func(*args)
File "E:\Python\pythondeom\Farme\testwen.py", line 174, in dellete_excel
file_path = self.name
AttributeError: 'A' object has no attribute 'name'
我的解答思路和尝试过的方法
不知道这样写的对不对不要喷我啊QAQ
它说class中没有name这个属性
我想要达到的结果
想知道可以用键盘输入的方法删除excel表格中 的具体数据,可以用什么方法啊,什么方法比较好啊