[GPA Check] 입력 기능 완성
Updated:
입력 기능 완성
[GPA Check] 입력 기능 구현 에서 콤보박스를 이용해 학점을 읽어 오는데 까지 완성했다.
이제 엄청난 고생이 예상된다고 했는데 생각보다 간단했다 !
그렇지만 코드가 조~금 정리가 안된 것 같아 완성하면 리팩토링을 한 번 해야겠다.
콤보 박스 함수 수정
콤보 박스를 만들고 가져오는 과정에서 뭔가 꺼림칙 한 부분이 있었다.
box_list 를 전역변수로 만들고 거기에 계속 콤보박스를 저장했다.
그런데 생각해보니 입력 할 때 마다 box_list 를 초기화 해 준 후 실행해야 하는데 그렇지 않고 있었다 !!
성적입력을 하면 할 수록 box_list 에 계속 쌓여가고 있었던 것 이었다..
box_list = [] # 성적입력 combo_box
class_list = [] # 성적입력 할 과목
table_name = [] # input 에서 사용 할 테이블 이름
def init_combo_box(self, my_result):
y = 89
box_list.clear()
class_list.clear()
for cur in my_result:
class_list.append(cur[0])
cur = QComboBox(self)
cur.addItem('A+')
cur.addItem('A0')
cur.addItem('B+')
cur.addItem('B0')
cur.addItem('C+')
cur.addItem('C0')
cur.addItem('D+')
cur.addItem('D0')
cur.addItem('F')
cur.addItem('FA')
cur.addItem('P')
cur.addItem('NP')
cur.move(900, y)
cur.setFixedSize(60, 60)
cur.show()
box_list.append(cur)
y += 32
insert_btn = QPushButton(self)
insert_btn.setText('입력')
insert_btn.setFixedSize(60, 30)
insert_btn.move(900, y + 30)
insert_btn.show()
insert_btn.clicked.connect(self.input_data)
그래서 box_list 를 처음에 clear 해준 뒤 시작 했다 !
그리고 아직 해결 하지 못 한 문제가 있다..
36번째 줄을 보면 버튼을 클릭 했을 때 input_data 함수를 실행한다.
그런데 저기에 인자를 넣어 전달해주면 버튼을 클릭하지도 않았는데 혼자 실행이 되고 에러가 발생한다 !!
그래서 어쩔 수 없이 전역변수를 사용하는 중..
어쨌든 학기에 맞는 성적을 선택 한 후 입력 버튼을 누르면 ?
def input_data(self):
grade_list = [val.currentText() for val in box_list]
for idx, val in enumerate(grade_list): # UPDATE 1_1 SET 등급 = 'A+' WHERE id = 1;
query = 'UPDATE ' + str(table_name[0]) + ' SET 등급 = \'' + val + '\' WHERE id = ' + str(idx + 1)
print(query)
my_cur.execute(query)
my_db.commit()
등급을 grade_list 에 저장 한 뒤 UPDATE 쿼리문을 만들어 동작한다 !
Leave a comment