본문 바로가기
python3 selenium

Python Pyqt5 입려값 json 파일로 저장, 불러오기, 수정, 삭제

by Pymac 2023. 11. 29.
반응형
   
class WindowClass(QDialog, form_class) :
    def __init__(self) :
        super().__init__()
        self.setupUi(self)
 
 
 
        self.user_info_list = [
            {'이름': '', '아이디': '', '비밀번호': '', '계정번호': ''}
            # 원하는 만큼 계속 추가 가능
        ]
 
 
  def populate_user_info(self):
        # 선택한 이름에 해당하는 정보로 라인 에디트 업데이트
        selected_name = self.combo_box1_6.currentText()
        user_info = next((info for info in self.user_info_list if info['이름'] == selected_name), {})
        self.name.setText(selected_name)
        self.ID_1.setText(user_info.get('아이디', ''))
        self.PW_1.setText(user_info.get('비밀번호', ''))
        self.account_no.setText(user_info.get('계정번호', ''))

    def save_user_info(self):
        # 현재 입력된 정보를 사용자 리스트에 추가
        user_info = {
            '이름': self.name.text(),
            '아이디': self.ID_1.text(),
            '비밀번호': self.PW_1.text(),
            '계정번호': self.account_no.text(),
        }
        self.user_info_list.append(user_info)

        # 콤보 박스 업데이트
        self.combo_box1_6.addItem(user_info['이름'])

        # 정보 초기화
        self.clear_user_info()

    def load_user_info(self):
        # 선택한 이름에 해당하는 정보를 불러와서 화면에 표시
        selected_name = self.combo_box1_6.currentText()
        user_info = next((info for info in self.user_info_list if info['이름'] == selected_name), {})
        self.name.setText(selected_name)
        self.ID_1.setText(user_info.get('아이디', ''))
        self.PW_1.setText(user_info.get('비밀번호', ''))
        self.account_no.setText(user_info.get('계정번호', ''))

    def update_user_info(self):
        # 현재 선택한 이름의 정보를 QLineEdit에 입력
        selected_name = self.combo_box1_6.currentText()
        user_info = next((info for info in self.user_info_list if info['이름'] == selected_name), {})
        user_info['아이디'] = self.ID_1.text()
        user_info['비밀번호'] = self.PW_1.text()
        user_info['계정번호'] = self.account_no.text()

        # 예시: 간단하게 콘솔에 출력
        print(f'{selected_name}의 정보가 수정되었습니다.')
        print(self.user_info_list)

        # 콤보 박스 업데이트
        self.combo_box1_6.clear()
        self.combo_box1_6.addItems([info['이름'] for info in self.user_info_list])

        # 정보 초기화
        self.clear_user_info()

    def delete_user_info(self):
        # 선택한 이름에 해당하는 정보 삭제 및 위젯 초기화
        selected_name = self.combo_box1_6.currentText()
        user_info_index = next((index for index, info in enumerate(self.user_info_list) if info['이름'] == selected_name), None)
        if user_info_index is not None:
            del self.user_info_list[user_info_index]
            print(f'{selected_name}의 정보가 삭제되었습니다.')
            print(self.user_info_list)

            # 콤보 박스 업데이트
            self.combo_box1_6.clear()
            self.combo_box1_6.addItems([info['이름'] for info in self.user_info_list])

            # 정보 초기화
            self.clear_user_info()
        else:
            print(f'{selected_name}의 정보가 존재하지 않습니다.')

    def clear_user_info(self):
        # QLineEdit 위젯 초기화
        self.name.clear()
        self.ID_1.clear()
        self.PW_1.clear()
        self.account_no.clear()
 
 
 
if __name__ == "__main__":

    app = QApplication(sys.argv)
    app.setQuitOnLastWindowClosed(False)
           # 시스템 메뉴 아이콘 제거

    myWindow = WindowClass()
    myWindow.show()

    sys.exit(app.exec_())
반응형