class TeamInfo:
def __init__(self, number, work, school, category, competitor, teacher):
self.number = number
self.work = work
self.school = school
self.category = category
self.competitor = competitor
self.teacher = teacher
class MyTable():
def __init__(self, master):
xscroll = Scrollbar(master, orient=HORIZONTAL)
yscroll = Scrollbar(master, orient=VERTICAL)
xscroll.pack(side=BOTTOM, fill=X)
yscroll.pack(side=RIGHT, fill=Y)
self.table = ttk.Treeview(master=master,
columns=tablecolumns,
height=15,
show='headings',
xscrollcommand=xscroll.set,
yscrollcommand=yscroll.set)
self.table.pack()
xscroll.config(command=self.table.xview)
yscroll.config(command=self.table.yview)
for i in range(len(tablecolumns)):
self.table.heading(column=tablecolumns[i], text=tablecolumns[i], anchor=CENTER)
self.table.column(column=tablecolumns[i], anchor=CENTER, width=150, stretch=True)
self.table.column(column=tablecolumns[1], anchor=CENTER, width=380, stretch=True)
with open("team.txt", "r", encoding="utf-8") as file:
messages = file.readlines()
for message in messages[1:]:
ateam = message.replace("\t", "").strip().split("#")
self.table.insert('', END, values=ateam)
management[ateam[0]] = TeamInfo(ateam[0], ateam[1], ateam[2], ateam[3], ateam[4], ateam[5])
def add_info(self):
tablevalues2 = list()
tablevalues2.append(entry1.get())
tablevalues2.append(entry2.get())
tablevalues2.append(entry3.get())
tablevalues2.append(entry4.get())
tablevalues2.append(entry5.get())
tablevalues2.append(entry6.get())
self.table.insert('', END, values=tablevalues2)
management[entry1.get()] = TeamInfo(entry1.get(),
entry2.get(),
entry3.get(),
entry4.get(),
entry5.get(),
entry6.get())
self.table.selection_set(self.table.get_children()[-1])
messagebox.showinfo(title="提示", message="已添加!")
def delete_info(self):
if entry1.get() in management.keys():
index = list(management.keys()).index(entry1.get())
self.table.delete(self.table.get_children()[index])
del management[entry1.get()]
messagebox.showinfo(title="提示", message="已删除!")
else:
messagebox.showerror("提示", "该编号不存在!")
def change_info(self):
tablevalues1 = list()
tablevalues1.append(entry1.get())
tablevalues1.append(entry2.get())
tablevalues1.append(entry3.get())
tablevalues1.append(entry4.get())
tablevalues1.append(entry5.get())
tablevalues1.append(entry6.get())
dex = list(management.keys()).index(entry1.get())
self.table.item(self.table.get_children()[dex], values=tablevalues1)
management[entry1.get()] = TeamInfo(entry1.get(),
entry2.get(),
entry3.get(),
entry4.get(),
entry5.get(),
entry6.get())
messagebox.showinfo("提示", "修改成功!")
def clear_entry():
entry1.delete(0, "end")
entry2.delete(0, "end")
entry3.delete(0, "end")
entry4.delete(0, "end")
entry5.delete(0, "end")
entry6.delete(0, "end")
def query_window():
if messagebox.askyesno("提示", "是否保存所有对信息的修改?"):
with open("team.txt", "w", encoding="utf-8") as file:
file.write("参赛队编号\t#\t参赛作品名称\t#\t参赛学校\t#\t赛事类别\t#\t参赛者\t#\t指导老师\n")
for i in management.keys():
file.write(management[i].number + "\t")
file.write("#\t" + management[i].work + "\t")
file.write("#\t" + management[i].school + "\t")
file.write("#\t" + management[i].category + "\t")
file.write("#\t" + management[i].competitor + "\t")
file.write("#\t" + management[i].teacher + "\n")
root.destroy()
def build_menu(menu_bar):
main_menu = Menu(menu_bar)
main_menu.add_command(label="管理")
submenu1 = Menu(main_menu,activebackground="pink",tearoff=False)
submenu1.add_command(label="查询叫号",command=lambda:build_toplevel1(menu_bar))
submenu1.add_command(label="模拟叫号",command=build_toplevel2)
submenu2 = Menu(main_menu,activebackground="pink",tearoff=False)
submenu2.add_command(label="查询目的地信息", command=lambda: build_toplevel6(menu_bar))
submenu2.add_command(label="导航目的地", command=lambda: build_toplevel5(menu_bar))
main_menu.add_cascade(label="叫号",menu=submenu1)
main_menu.add_command(label="查询",command=lambda: build_toplevel4(menu_bar))
main_menu.add_cascade(label="目的地",menu=submenu2)
menu_bar.config(menu=main_menu)
root = Tk()
build_menu(root)
upframe = Frame(root)
downframe = Frame(root)
leftframe = Frame(downframe)
rightframe = Frame(downframe)
upframe.pack(side="top")
downframe.pack()
leftframe.pack(side="left")
rightframe.pack(side="right")
root.title("计设大赛赛事管理系统")
root.geometry('800x650+350+100')
mytable = MyTable(upframe)
for i, j in enumerate(tablecolumns):
Label(leftframe, text=j).grid(row=i)
entry1 = Entry(leftframe)
entry2 = Entry(leftframe)
entry3 = Entry(leftframe)
entry4 = Entry(leftframe)
entry5 = Entry(leftframe)
entry6 = Entry(leftframe)
entry1.grid(row=0, column=1, padx=20, pady=5)
entry2.grid(row=1, column=1, padx=20, pady=5)
entry3.grid(row=2, column=1, padx=20, pady=5)
entry4.grid(row=3, column=1, padx=20, pady=5)
entry5.grid(row=4, column=1, padx=20, pady=5)
entry6.grid(row=5, column=1, padx=20, pady=5)
button1 = Button(rightframe, text="由编号查询团队信息", command=search_team)
button2 = Button(rightframe, text="增添参赛团队信息", command=mytable.add_info)
button3 = Button(rightframe, text="由编号删除团队信息", command=mytable.delete_info)
button4 = Button(rightframe, text="一键清空输入框", command=clear_entry)
button5 = Button(rightframe, text="修改参赛团队信息", command=mytable.change_info)
button1.pack(anchor="w", padx=20, pady=5)
button2.pack(anchor="w", padx=20, pady=5)
button3.pack(anchor="w", padx=20, pady=5)
button4.pack(anchor="w", padx=20, pady=5)
button5.pack(anchor="w", padx=20, pady=5)
root.protocol('WM_DELETE_WINDOW', query_window)
root.mainloop()
课设——参赛队伍管理功能及部分GUI设计源码
最新推荐文章于 2024-07-13 21:34:41 发布