from tkinter import * from api.ncnu import NcnuAPI from config import CONFIG from tkinter import messagebox from tkhtmlview import HTMLLabel def createNcnuWin(ncnu): if ncnu.status: def dlCurriculum(sem): if ncnu.getCourseTable(sem): messagebox.showinfo(message="{} 課表已經儲存到 ./{}課表.pdf".format(sem,sem)) else: messagebox.showwarning(message="無法存取 {} 課表".format(sem)) win=Tk() leftframe=Frame(win) leftframe.pack(fill=BOTH,side=LEFT) rightframe=Frame(win) rightframe.pack(side=RIGHT) textlb=Label(leftframe,text="我的學習紀錄",font="Helvetica 20") options=["各學期成績總覽","指定學期的成績列表","缺曠課記錄","獎懲紀錄","加選課程狀態"] optionsListbox=Listbox(leftframe) optionsListbox.insert(END,*options) chooseSemesterLb=Label(leftframe,text="指定學期",font="Helvetica 10") chooseSemesterEntry=Entry(leftframe) chooseSemesterEntry.insert(0,"1092") downloadBtn=Button(leftframe,text="下載課表",command=lambda:dlCurriculum(chooseSemesterEntry.get())) textlb.pack(fill=BOTH,expand=True) optionsListbox.pack(fill=BOTH) chooseSemesterLb.pack(fill=BOTH) chooseSemesterEntry.pack(fill=BOTH) downloadBtn.pack() htmlLb=HTMLLabel(rightframe,html="") htmlScrollbar=Scrollbar(rightframe) htmlLb.configure(yscrollcommand=htmlScrollbar.set) htmlScrollbar.pack(fill=Y,side=RIGHT) htmlLb.pack() def itemSelected(event): obj = event.widget Index = obj.curselection() ht='''
讀取中
''' htmlLb.set_html(ht) win.update() Html='''''' if str( obj.get(Index) ) == options[0]: scores = ncnu.getScoreSummary() for c in scores['semesters']: Html+=''' 學期:{} 修課數:{} 通過數:{} 學分數:{} 平均分數:{} 排名:{}

'''.format(c.get("semester"), c.get("select_num"),c.get("pass_Num"),c.get("pass_credit"),c.get("average"),c.get("rank") ) c=scores['sum'] Html+=''' 學期{} 修課數:{} 通過數:{} 學分數:{} {} {}'''.format(c.get("semester"), c.get("select_num"),c.get("pass_Num"),c.get("pass_credit"),c.get("average"),c.get("rank") ) htmlLb.set_html(Html) elif str( obj.get(Index) ) == options[1]: scores = ncnu.getScore(chooseSemesterEntry.get()) for i in scores: Html+="代號: {} 班號: {} 課程名稱: {} 學分數: {}老師: {} 時間: {} 地點: {} 學分: {} 分數: {} 是否為必修?: {}

".format(i.get("number"), i.get("class"),i.get("name"),i.get("credit"),i.get("teacher"),i.get("time"),i.get("place"),i.get("credit"),i.get("score"),i.get("mandatary") ) htmlLb.set_html(Html) elif str( obj.get(Index) ) == options[2]: absenceLogs = ncnu.getAbsenceLogs() if absenceLogs: for log in absenceLogs: Html+=''' {} {} {} {} {}'''.format(log.get('id'), log.get('semester'),log.get('classname'),log.get('date'),log.get('time')) htmlLb.set_html(Html) else: Html+='''

沒有任何缺曠課記錄

''' htmlLb.set_html(Html) elif str( obj.get(Index) ) == options[3]: awardLogs = ncnu.getAwardLogs() if awardLogs: for log in awardLogs: Html+=''' {} {} {} {} {}'''.format(log.get('id'), log.get('semester'),log.get('award'),log.get('count'),log.get('content')) htmlLb.set_html(Html) else: Html+='''

沒有任何缺曠課記錄

''' htmlLb.set_html(Html) elif str( obj.get(Index) ) == options[4]: logs = ncnu.getAddCourseLogs() if logs: for log in logs: Html+=''' {} 學期: {}
課名: {} 班別: {} 加選狀態:{}

'''.format(log.get('id'), log.get('semester'),log.get('classname'),log.get('class'),log.get('check')) htmlLb.set_html(Html) optionsListbox.bind("<>", itemSelected) win.mainloop() else: print("NCNU 教務系統登入失敗")