diff --git a/courseTable.py b/courseTable.py index c6b52c0..2385a4b 100644 --- a/courseTable.py +++ b/courseTable.py @@ -2,136 +2,136 @@ import requests import json from tkinter import * from api.courseTable.courseTable import * +def callTable(): + url = 'https://raw.githubusercontent.com/snsd0805/NCNU_Course/master/%E6%AD%B7%E5%B9%B4%E8%AA%B2%E7%A8%8B%E8%B3%87%E6%96%99/1092_output.json' + response = requests.get(url) -url = 'https://raw.githubusercontent.com/snsd0805/NCNU_Course/master/%E6%AD%B7%E5%B9%B4%E8%AA%B2%E7%A8%8B%E8%B3%87%E6%96%99/1092_output.json' -response = requests.get(url) + data = json.loads(response.text) -data = json.loads(response.text) - -class Choose(): - def __init__(self,root,name,typeS): - self.frame=Frame(root) - self.classname = Label(self.frame, font="10", width="10", text=name) - self.listbox = Listbox(self.frame) - self.scrollbar=Scrollbar(self.frame) - self.checkBtn = Button(self.frame, text="選取") - self.checkBtn.config( - command=lambda: self.setDepartment() if self.type=="department" else self.setCourse() - ) - self.type = typeS - - def setDepartment(self): - # print("set department") - # print(self.listbox.get(ACTIVE)) - self.update() - - def setCourse(self): - # print("set course") - # print(self.listbox.get(ACTIVE).split(' ')[0]) - courseTable.add( - self.listbox.get(ACTIVE).split(' ')[0] - ) - self.update() - - def update(self): - courses = courseTable.courseFilter(box[0].listbox.get(ACTIVE)) - courses = ["{} {}({})".format(course['number'], course['name'], course['time']) for course in courses] - box[1].listbox.delete(0, END) - box[1].insert(courses) - - # update table draw - for j in range(5): - for i in range(13): - if courseTable.table[str(j+1) + tmp[i]] != None: - table[18 + (13*j+i)].classname.config(text= - courseTable.table[str(j+1) + tmp[i]]['name'] - ) - table[18 + (13*j+i)].removeBtn.grid() - table[18 + (13*j+i)].id = courseTable.table[str(j+1) + tmp[i]]['number'] - else: - table[18 + (13*j+i)].classname.config(text="") - table[18 + (13*j+i)].removeBtn.grid_forget() - table[18 + (13*j+i)].id = None - - def insert(self,LIST): - self.listbox.insert(END,*LIST) - - def grid(self,Row,Column,span): - self.listbox.selection_set(15) - self.frame.grid(row=Row,column=Column,rowspan=span,padx=10,sticky="n"+"s") - self.classname.pack() - self.scrollbar.pack(fill=Y,side=RIGHT) - self.listbox.pack() - self.listbox.config(yscrollcommand=self.scrollbar.set) - self.checkBtn.pack() - -class Space(): - def __init__(self, root, name=None): - self.frame = Frame(root,relief=RIDGE,bd=1) - self.classname = Label(self.frame, font=("Curier New",10),padx=10, text=name,justify="right") - self.removeBtn = Button(self.frame, font=("Curier New",10), text="刪", command=self.removeCourse) - #self.frame.config(relief=RIDGE) - self.id = None - - def grid(self,Row,Column): - if Row==5: - self.frame.config(bg="green") - self.classname.config(bg="green") - self.frame.grid(row=Row,column=Column,padx=20,sticky="w"+"e") - self.classname.grid(row=0,column=0) - self.removeBtn.grid(row=0,column=1) - self.removeBtn.grid_forget() - - def removeCourse(self): - # print(self.id) - courseTable.remove(self.id) - box[0].update() - # courseTable.showTableStatus() + class Choose(): + def __init__(self,root,name,typeS): + self.frame=Frame(root) + self.classname = Label(self.frame, font="10", width="10", text=name) + self.listbox = Listbox(self.frame) + self.scrollbar=Scrollbar(self.frame) + self.checkBtn = Button(self.frame, text="選取") + self.checkBtn.config( + command=lambda: self.setDepartment() if self.type=="department" else self.setCourse() + ) + self.type = typeS -root = Tk() -root.geometry('800x600') + def setDepartment(self): + # print("set department") + # print(self.listbox.get(ACTIVE)) + self.update() + + def setCourse(self): + # print("set course") + # print(self.listbox.get(ACTIVE).split(' ')[0]) + courseTable.add( + self.listbox.get(ACTIVE).split(' ')[0] + ) + self.update() + + def update(self): + courses = courseTable.courseFilter(box[0].listbox.get(ACTIVE)) + courses = ["{} {}({})".format(course['number'], course['name'], course['time']) for course in courses] + box[1].listbox.delete(0, END) + box[1].insert(courses) -courseTable = CourseTable() + # update table draw + for j in range(5): + for i in range(13): + if courseTable.table[str(j+1) + tmp[i]] != None: + table[18 + (13*j+i)].classname.config(text= + courseTable.table[str(j+1) + tmp[i]]['name'] + ) + table[18 + (13*j+i)].removeBtn.grid() + table[18 + (13*j+i)].id = courseTable.table[str(j+1) + tmp[i]]['number'] + else: + table[18 + (13*j+i)].classname.config(text="") + table[18 + (13*j+i)].removeBtn.grid_forget() + table[18 + (13*j+i)].id = None -box=[] -box.append(Choose(root,name="科系",typeS='department')) -departments = courseTable.getDepartmentList() -box[0].insert(departments) -box[0].listbox.select_set(0) -box[0].grid(0,0,7) + def insert(self,LIST): + self.listbox.insert(END,*LIST) -box.append(Choose(root,name="課程",typeS='courses')) -courses = courseTable.courseFilter("21, 資工系") + def grid(self,Row,Column,span): + self.listbox.selection_set(15) + self.frame.grid(row=Row,column=Column,rowspan=span,padx=10,sticky="n"+"s") + self.classname.pack() + self.scrollbar.pack(fill=Y,side=RIGHT) + self.listbox.pack() + self.listbox.config(yscrollcommand=self.scrollbar.set) + self.checkBtn.pack() -box[1].insert(["{} {}({})".format(course['number'], course['name'], course['time']) for course in courses]) -box[1].grid(7,0,6) + class Space(): + def __init__(self, root, name=None): + self.frame = Frame(root,relief=RIDGE,bd=1) + self.classname = Label(self.frame, font=("Curier New",10),padx=10, text=name,justify="right") + self.removeBtn = Button(self.frame, font=("Curier New",10), text="刪", command=self.removeCourse) + #self.frame.config(relief=RIDGE) + self.id = None + + def grid(self,Row,Column): + if Row==5: + self.frame.config(bg="green") + self.classname.config(bg="green") + self.frame.grid(row=Row,column=Column,padx=20,sticky="w"+"e") + self.classname.grid(row=0,column=0) + self.removeBtn.grid(row=0,column=1) + self.removeBtn.grid_forget() + + def removeCourse(self): + # print(self.id) + courseTable.remove(self.id) + box[0].update() + # courseTable.showTableStatus() + + root = Tk() + root.geometry('800x600') + + courseTable = CourseTable() + + box=[] + box.append(Choose(root,name="科系",typeS='department')) + departments = courseTable.getDepartmentList() + box[0].insert(departments) + box[0].listbox.select_set(0) + box[0].grid(0,0,7) + + box.append(Choose(root,name="課程",typeS='courses')) + courses = courseTable.courseFilter("21, 資工系") + + box[1].insert(["{} {}({})".format(course['number'], course['name'], course['time']) for course in courses]) + box[1].grid(7,0,6) -table = [] -k=0 + table = [] + k=0 -tmp=list("abcdzefghijklm") + tmp=list("abcdzefghijklm") -for j in range(5): - table.append(Label(root,text=j+1,font=("Curier New",20))) - table[k].grid(row=0,column=j+3) - k+=1 - -for i in range(13): - table.append(Label(root,text=tmp[i])) - table[k].grid(row=i+1,column=1) - - k+=1 - -table[9].config(bg="green") - -# 18~ -for j in range(5): - for i in range(13): - table.append(Space(root)) - table[k].grid(i+1,j+3) + for j in range(5): + table.append(Label(root,text=j+1,font=("Curier New",20))) + table[k].grid(row=0,column=j+3) k+=1 - - -root.mainloop() \ No newline at end of file + for i in range(13): + table.append(Label(root,text=tmp[i])) + table[k].grid(row=i+1,column=1) + + k+=1 + + table[9].config(bg="green") + + # 18~ + for j in range(5): + for i in range(13): + table.append(Space(root)) + table[k].grid(i+1,j+3) + k+=1 + + + + root.mainloop() \ No newline at end of file