안녕하세요?


지난번 포스팅에서 예상치 못한... 처음 마주쳤을 때는 이거 어떻게 해야 하나? 라는 생각이 들 정도로 답이 없는 오류가 발생해서 아예 윈도우가 프로그램을 종료시켜 버리는 에러가 발생하는 것을 볼 수 있었습니다. 그래서 이번 포스팅에서는 이 오류를 어떻게 해결하는 지를 보여드리겠습니다.



먼저 pytrader.py에 있는 MyWindow라는 클래스의 메소드 마다 print() 메소드를 사용, PyCharm의 실행 로그에 이 값들이 찍히는 것을 보고, 어느 메소드에서 문제가 생겼는지 알아보고자 합니다. 일단 먼저 실행이 되면 초기화 하라는 __init__를 제외하면 먼저 실행되는 메소드가 timeout이라서, 여기서 에러가 발생한 것이 아닌지 일단 알아보고자 합니다.



일단 여기서는 제대로 A03이라는 값이 출력되는 것으로 봐서는 여기에서 에러가 발생한 것이 아니라는 것을 알 수 있었습니다. 그래서 다음 작업을 생각해 보고자 합니다.



timeout의 어느 행이 문제가 되는지를 알아보기 위해서 행마다 print()메소드를 사용했으며, 이를 바탕으로 어디서 문제가 되는지를 알 수 있으리라 생각을 했습니다.



알고보니 마지막에 넣었던 A04_6이 출력되지 않는 것을 볼 수 있었습니다. 왜 3으로 끝다나가 여기만 4_6이냐고 하면 오타를 내서 입니다. 이는 중요한 것이 아니고, 이제 어디가 문제인지 알 수 있었으니, 이를 해결하러 가 보도록 합니다.




위 스크린샷의 붉은색 밑줄친 부분의 어디가 문제인가 했더니, statusBar라는 메소드에서는 showMessage라는 것이 없다는 것을 알 수 있었습니다. 즉, 아예 정의되지 않은 메소드를 사용했으니, 알수 없는 일이 일어나서 그냥 윈도우가 종료한다는 것을 알 수 있었습니다.



설마해서 이 부분을 주석처리 하였더니, 마지막 문자열까지 제대로 출력이 되는 것을 볼 수 있었습니다. 이로서 이 부분-상태표시창에 무슨 에러가 생긴 것을 알 수 있었습니다.



그래서 어떻게 고쳐야 하는지를 생각한 다음에, 위 스크린샷처럼 QStatusBar()라고 상태표시창의 클래스에 접근을 한 다음에, 이를 바탕으로 메세지를 표시하라는 명령을 내렸습니다.



그런데 또 다른 문제가 생겼습니다. 이번에는 윈도우가 종료시키는 에러가 생긴 것은 아니기는 한데, 대신 상태 표시창에 아무런 메세지도 뜨지 않는 것을 확인할 수 있었습니다.




그래서 Qt Designer에서 무슨 에러가 생겼나 싶어서, 한번 상태 표시창의 배경색을 한번 바꾸어 보기로 하고, 다음으로는 이게 반영이 되는지 한번 살펴 보고자 합니다.



일단 Qt Designer에서 변경한 사항이 제대로 적용이 되는 것은 확인할 수 있었습니다. 문제는 여기까지는 되는데, 왜 제가 입력한 내용은 전혀 나오지 않는가 하는 것 입니다.



혹시나 싶어서 한번 단순한 ""사이의 문자열로 바꾸어서 넣어 보고자 합니다.



절대로 이건 같은 스크린샷을 재활용한 것이 아닙니다. 이건 뭐라고 해야 할까요? 제가 코드에서 적용하라고 했는 내용이 전혀 반영이 되지 않는 것을 확인할 수 있는데, 아무튼 이걸 해결하지 못해서 상당히 난감한 상황에 처하기는 처했습니다. 일단 여기서 끊도록 하는데, 다음 포스팅에서는 어떻게 이 내용을 해결해서 제대로 작동하는 것을 올리고자 합니다.

  1. 호바드 2020.01.14 02:32 신고

    다행히 저는 하기 메세지 뿌리는 부분 이상없이 잘 되는것 같습니다..

    self.statusbar.showMessage(state_msg + " | " + time_msg)

+ Recent posts