课设——参赛队伍查询源码

该代码定义了一个用于查询赛事的GUI界面,用户输入赛事类别和参赛学校后,程序会在管理数据中过滤并显示结果。如果查询条件有效,结果将展示在一个新的Toplevel窗口中,使用Treeview控件以表格形式呈现,包括参赛队编号、作品名称等信息。如果查询的学校或类别不存在,程序会弹出错误提示。
摘要由CSDN通过智能技术生成
def build_toplevel4(r):
    toplevel=Toplevel(r)
    toplevel.title("查询")
    toplevel.geometry("300x200+600+400")
    Label(toplevel,text="要查询的赛事类别:").grid(row=0,column=0,pady=20)
    ent1=Entry(toplevel)
    ent1.grid(row=0,column=1,pady=20)
    Label(toplevel,text="要查询的参赛学校:").grid(row=1,column=0,pady=20)
    ent2=Entry(toplevel)
    ent2.grid(row=1,column=1,pady=20)
    Button(toplevel,text="查询",command=lambda : get_result(ent1.get(),ent2.get(),toplevel)).grid(row=2,pady=20)


def get_result(cat,search_school,wd):
    categories = list(set(map(lambda x: x.category, management.values())))
    if search_school:
        schools = list(set(map(lambda x: x.school, management.values())))
        if search_school in schools:
            tl = Toplevel(wd)
            tl.title(search_school+"的查询结果")
            tl.geometry("500x400+400+200")
            xscroll = Scrollbar(tl, orient=HORIZONTAL)
            yscroll = Scrollbar(tl, orient=VERTICAL)
            xscroll.pack(side=BOTTOM, fill=X)
            yscroll.pack(side=RIGHT, fill=Y)
            tbcolumns = ["参赛队编号", "参赛作品名称", "参赛者", "指导老师"]
            tree = ttk.Treeview(master=tl,
                                columns=tbcolumns,
                                show='tree headings',
                                height=150,
                                xscrollcommand=xscroll.set,
                                yscrollcommand=yscroll.set,
                                displaycolumns="#all")
            xscroll.config(command=tree.xview)
            yscroll.config(command=tree.yview)
            tree.heading(column="#0",text="赛事类别")
            for i in range(len(tbcolumns)):
                tree.heading(column=tbcolumns[i],text=tbcolumns[i])
                tree.column(column=tbcolumns[i], anchor=CENTER, width=150, stretch=True)
            objs = list(filter(lambda x: x.school == search_school, management.values()))
            for typ in categories:
                obj=list(filter(lambda x:x.category==typ,objs))
                if obj:
                    stu_root = tree.insert('', END, text=typ)
                    for index in range(len(obj)):
                        tree.insert(stu_root, END, text=str(index+1), values=[obj[index].number,
                                                                               obj[index].work,
                                                                               obj[index].competitor,
                                                                               obj[index].teacher])
            tree.pack(fill=BOTH)
        else:
            messagebox.showerror("提示", "查询的学校不存在!")
    elif cat:
        if cat in categories:
            tl = Toplevel(wd)
            tl.title(cat + "的查询结果")
            tl.geometry("500x400+400+200")
            tbcolumns = ["参赛队编号", "参赛学校", "参赛作品名称", "参赛者", "指导老师"]
            xscroll = Scrollbar(tl, orient=HORIZONTAL)
            yscroll = Scrollbar(tl, orient=VERTICAL)
            xscroll.pack(side=BOTTOM, fill=X)
            yscroll.pack(side=RIGHT, fill=Y)
            tree = ttk.Treeview(master=tl,
                                columns=tbcolumns,
                                show='headings',
                                height=150,
                                xscrollcommand=xscroll.set,
                                yscrollcommand=yscroll.set)
            xscroll.config(command=tree.xview)
            yscroll.config(command=tree.yview)
            for i in range(len(tbcolumns)):
                tree.heading(column=tbcolumns[i], text=tbcolumns[i])
                tree.column(column=tbcolumns[i], anchor=CENTER, width=150, stretch=True)
            objs = list(filter(lambda x: x.category == cat, management.values()))
            def quick_sort(first, end):
                if first < end:
                    x = objs[first]
                    m, n = first, end
                    while m < n:
                        while m < n and objs[n].number >= x.number:
                            n -= 1
                        if m < n:
                            objs[m] = objs[n]
                        while m < n and objs[m].number <= x.number:
                            m += 1
                        if m < n:
                            objs[n] = objs[m]
                    objs[m] = x
                    quick_sort(first, m - 1)
                    quick_sort(m + 1, end)
            quick_sort(0,len(objs)-1)
            for index in range(len(objs)):
                tree.insert('', END, values=[objs[index].number,
                                             objs[index].school,
                                             objs[index].work,
                                             objs[index].competitor,
                                             objs[index].teacher])
            tree.pack(fill=BOTH)

        else:
            messagebox.showerror("提示", "查找的赛事类别不存在!")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值