안녕하세요?


지난번 포스팅에서는 레이블을 표식으로 남겨서 어느정도 작업이 진행이 되었는지 일단은 알 수 있도록 만들어 주었는데, 이번 포스팅에서는 관련된 작업을 이어서 나가고자 합니다. 그런데 도중에 예상치 못한 상황이 발생하는 바람에 이를 처리하는 데 상당한 시간이 걸리기는 했습니다.



먼저 위 스크린샷과 같이, 이번에는 데이터 베이스 파일이 제대로 선택이 된 것이 맞는지 확인하는 메소드를 지정하였습니다. 여기서는 당연하다면 당연하게도, 데이터 베이스 파일을 의미하는 .db가 없는 경우에는 그에 걸맞게 처리를 하도록 만들어 주었습니다.



그런데 여기서 한가지 문제가 생겼습니다. 일단 데이터 베이스 파일을 선택해야 하는 단계가 왔는데, 문제는 여기서 취소를 누르게 되면, 다음과 같은 문제가 벌어지게 됩니다.



바로 프로젝트가 있는 폴더가 선택이 되기는 되는데, 이는 데이터 베이스 파일도 아닌데 선택이 되어 버리는 문제가 발생하는 것 입니다. 이래서는 에러가 발생하기 때문에, 그냥은 안되겠다는 생각이 듭니다.



실제로 저런 상태에서 한번 확인을 해 보기 위해서 종목의 코드를 입력해 보기는 보았습니다. 그리고 실제로 에러가 발생하는 것을 확인할 수 있었습니다.




이 에러를 처리하기 위해서, 우선 데이터 베이스 파일이 선택이 되었다는 것을 보여주는 lineEdit에서 일일히 수동으로 경로를 입력할 수 없도록 readOnly를 지정해 주도록 합니다.



다음은 lineEdit의 텍스가 변경이 될 때=바로 데이터 베이스 파일이 지정이 되었을 때, 바로 제대로 데이터 베이스 파일이 지정이 된 것이 맞는지 아닌지 확인하는 메소드가 작동이 되도록 코드를 짜 주도록 합니다.



그러면서 먼저 self.dataBasePath_1이 return이 되도록 짜 주기는 했는데, 나중에 가서야 알 수 있었지만, 이 부분은 특별히 필요하지는 않았습니다.



그 다음으로는 제대로 데이터 베이스를 선택한 것이 맞는지 아닌지 확인하는 메소드입니다. 여기서는 당연 lineEdit 위젯의 텍스트에서 find()함수를 사용해서 .db의 문자열이 있는지 = 바로 데이터 베이스 파일의 확장자를 지니는 지를 확인해 보는 것 입니다.




그런데 어떻게 된 것인지 에러가 발생하는 것을 볼 수 있었습니다. 아무래도 changeText라는 것이 무언가 문제가 아닌가 하는 생각이 드는데........



알고보니 모르고 connect라는 메소드를 지정하지 않아서 벌어진 일이였습니다. 위 코드에서 제가 메세지 박스를 지정해 주었는데, 제대로 나오기는 나오는 것이 맞는지 확인을 해 보면....



일단 위 스크린샷에 나오는 것처럼 제대로 데이터 베이스 파일이 선택되지 않으면 위 스크린샷과 같은 메세지 박스가 나오는 것을 확인할 수 있엇습니다. 그리고 위에서 제기가 된 문제인 데이터 베이스 파일을 선택해 주는 윈도우가 떴을 때, 그냥 취소만 눌러도, 위 스크린샷과 같은 메세지가 뜨면서 lineEdit이 비워지는 것을 확인할 수 있었습니다.



그리고 나서 위 스크린샷처럼 제대로 데이터 베이스 파일이 선택이 되면, 위 스크린샷과 같은 메세지 박스가 나오는 것을 확인할 수 있었습니다. 이렇게 하는 것으로 오 클릭을 하는 위험을 제거할 수 있게 되었습니다. 하지만 아직도 기계학습을 일으키고 수익 모델을 찾기 위해서 가야할 길이 멀기 때문에, 계속해서 작업을 이어가 보겠습니다.

+ Recent posts