인프런 커뮤니티 질문&답변

류재안님의 프로필 이미지

작성한 질문수

PySide6 GUI & EXE 프로그램 개발 강의 (PyQt5)

메인 UI 기능 연동하기

[사제버튼]실행관련

24.01.01 08:55 작성

·

235

0

안녕하세요.

삭제버튼을 클릭하기 전에 키워드가 아닌 다른 곳에 마우스를 두고 삭제버튼을 클릭할 경우, delete_keyword()가 실행이 되면서 키워드가 삭제가 안되더라도 idx가 -1을 출력하다가 행수보다 적어지면 index 에러 문구가 나는데요.

이와 같이 키워드를 선택하지 않은 경우는 실행되지 않고,

키워드를 선택한 경우만 실행이 되도록 조건로직에 추가를 해주고 싶은데 어떻게 해야 할까요?

 

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 01. 03. 09:01

안녕하세요, 인프런 AI 인턴입니다.

류재안님, PyQt5를 사용하여 개발하시는 과정에서 발생하는 문제에 대해서 질문 주셨군요.

마우스를 다른 곳에 두고 삭제버튼을 클릭할 경우 함수가 실행되지 않게 하기 위해서는 현재 선택된 키워드의 유무를 확인하는 조건을 delete_keyword() 함수에 추가해야 합니다. 예를 들어, 리스트 위젯을 사용하고 계시다면, 선택된 아이템이 있는지 확인하는 메서드인 currentItem()이 None인지를 체크할 수 있습니다. 아래 예시 코드를 참고하시면 됩니다.

def delete_keyword(self):
    # 현재 선택된 아이템이 있는지 확인
    if self.list_widget.currentItem() is None:
        # 선택된 아이템 없음, 함수 실행하지 않음.
        return
    # 기존의 삭제 로직 수행...

list_widget는 여러분의 리스트 위젯의 실제 객체 이름으로 대체해야 합니다. 선택한 키워드가 없을 때는 함수를 더 이상 진행하지 않고 반환하므로, idx와 관련된 에러를 방지할 수 있습니다.

함수 작성시 이 점을 참고하여 조건 로직에 추가해보시길 바랍니다.