from PyQt5.QtWidgets import QWidget, QLineEdit, QDesktopWidget, QVBoxLayout, QLabel, QPushButton, QHBoxLayout from PyQt5.QtCore import Qt import pyperclip class ApiKeyWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("API Keys") self.setGeometry(100, 100, 400, 400) self.layout = QVBoxLayout() self.setLayout(self.layout) # 초기화된 UI 구성 요소를 저장할 리스트 self.key_widgets = [] self.ss_id = QLineEdit() self.ss_pw = QLineEdit() self.ok_btn = QPushButton("스마트스토어 계정 저장") # 확인 버튼 추가 및 초기화 self.confirm_button = QPushButton("확인") self.confirm_button.clicked.connect(self.close) # self.layout.addWidget(self.confirm_button) def call_UI(self, api_keys, current_api_keys = None): # 기존 위젯 제거 self.clear_layout() print(f"current_api_keys\n{current_api_keys}") def ok_btn_clicked(): current_api_keys['스마트스토어']['업로드할스마트스토어계정id'] = self.ss_id.text() print(f"업로드할스마트스토어계정ID : {self.ss_id.text()}") current_api_keys['스마트스토어']['업로드할스마트스토어계정pw'] = self.ss_pw.text() print(f"업로드할스마트스토어계정PW : {self.ss_pw.text()}") pass if current_api_keys: self.ss_id.setAlignment(Qt.AlignLeft) self.ss_id.setPlaceholderText("스마트스토어 계정의 ID") self.ss_id.setVisible(True) self.ss_id.setText(current_api_keys['스마트스토어']['업로드할스마트스토어계정id']) self.ss_pw.setAlignment(Qt.AlignLeft) self.ss_pw.setPlaceholderText("스마트스토어 계정의 비밀번호") self.ss_pw.setVisible(True) self.ss_pw.setText(current_api_keys['스마트스토어']['업로드할스마트스토어계정pw']) self.ok_btn.setVisible(True) self.ok_btn.clicked.connect(ok_btn_clicked) self.layout.addWidget(self.ss_id) self.layout.addWidget(self.ss_pw) self.layout.addWidget(self.ok_btn) if api_keys: for key, value in api_keys.items(): # print(f"call_UI || api_keys.items() : {api_keys.items()}") print(f"call_UI || key : {key}") print(f"call_UI || value : {value}") h_layout = QHBoxLayout() key_label = QLabel(f"키 이름: {key}") value_label = QLabel(f"키 값: {value}") copy_button = QPushButton("키 복사") copy_button.clicked.connect(lambda checked, v=value: self.copy_to_clipboard(v)) h_layout.addWidget(key_label) h_layout.addWidget(value_label) h_layout.addWidget(copy_button) self.layout.insertLayout(self.layout.count() - 1, h_layout) self.key_widgets.append((key_label, value_label, copy_button)) # self.layout.addWidget(self.confirm_button) self.center() self.show() def clear_layout(self): for widgets in self.key_widgets: for widget in widgets: widget.deleteLater() self.key_widgets.clear() if self.ss_id: self.ss_id.setVisible(False) self.ss_pw.setVisible(False) self.ok_btn.setVisible(False) def copy_to_clipboard(self, value): pyperclip.copy(value) print(f"Copied to clipboard: {value}") def center(self): # 부모 위젯의 중앙에 위치하도록 조정 if self.parent(): parent_geometry = self.parent().frameGeometry() self_geometry = self.frameGeometry() center_point = parent_geometry.center() self_geometry.moveCenter(center_point) self.move(self_geometry.topLeft()) else: screen_geometry = self.frameGeometry() screen_center = QDesktopWidget().availableGeometry().center() screen_geometry.moveCenter(screen_center) self.move(screen_geometry.topLeft())