[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 쿼리문을 만들어 동작한다 !


Categories:

Updated:

Leave a comment