diff --git a/Ncnu.py b/Ncnu.py new file mode 100644 index 0000000..33cae82 --- /dev/null +++ b/Ncnu.py @@ -0,0 +1,100 @@ +from tkinter import * +from api.ncnu import NCNU +from config import CONFIG +from tkinter import messagebox +from tkhtmlview import HTMLLabel + +def createNcnuWin(): + ncnu = NCNU(CONFIG['NCNU']['username'], CONFIG['NCNU']['password']) + 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() + + 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(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('class'),log.get('check'))
+ htmlLb.set_html(Html)
+ optionsListbox.bind("<