안녕하세요?


지난번 포스팅에서 어떻게 주식 인공지능의 몸통이 되는 pytrader의 부모 프로세스가 되는 더 상위의 프로세스를 만들어 보고자 합니다만, 그 과정이 한번에 끝나지 않을 정도로 상당히 힘들기는 힘든 상황이기는 합니다. 그래도 어떻게 진행을 하기는 하였고, 그 내용을 블로그에 포스팅으로 올려 보고자 합니다.



먼저 토글(toggle) 버튼으로 만들기 위해서 Qt designer에서 위 스크린샷처럼 checkable에다가 체크 표시를 해 주돌고 합니다. 



그리고 나서 checked라는 항목의 체크 표시를 누르게 되면, 토글 버튼으로 만든 버튼을 눌렀을 때, 어떤 변화가 일어나는 지를 보여주게 됩니다.



일단 Qt Designer상에서 위 스크린샷에서 보이는 것이 위 스크린샷과 같이 버튼의 색상과 모양이 상당히 많이 바뀌는 것을 확인할 수 있습니다.




실제로 위 스크린샷처럼 만들어서 pytrader의 부모 프로세스를 실행시켜서 버튼을 눌러 보면, 위 스크린샷처럼 색상과 모양이 Qt designer에서 변하는 것처럼 변하는 것을 확인할 수 있기는 있습니다.



다만 이렇게 색상이 연해지는 변화만을 원하지 않기 때문에, 위 스크린샷처럼 isChecked()라는 함수를 사용하면, 버튼을 누르지 않았을 경우에는 Fase가 되고, 버튼을 누르면 True가 되는 것을 볼 수 있습니다. 그래서 위 스크린샷처럼 setStyleSheet() 라는 함수를 사용해서 배경화면의 색(background-color:rgb)라는 명령어로 바꾸어 줄 수 있습니다.



위 화면에 올린 Gif파일처럼 토글 버튼이 완성이 되는 것을 확인할 수 있어야 합니다. 일단 여기서 자식 프로세스를 연결해 놓지 않았기 때문에 바로 무언가가 실행되지는 않습니다.




다음으로는 위 스크린샷처럼 self를 붙여서 메서드간을 뛰어넘어서 작용할 수 있는 변수를 만들어 놓은 다음에, 버튼을 누르면 위 스크린샷의 코드처럼 변수를 True로 만들어 주고, 아니면 False로 만들어 주도록 합니다.



그리고 나서, 위 스크린샷처럼 토글 버튼을 눌렀을 경우에는 프로세스를 죽이라는 명령어를 띄우도록 합니다.



이제 위  스크린샷처럼 어떻게 자식 프로세스인 pytrader가 뜨는 것을 볼 수 있습니다만, 한가지 문제가 생겼습니다. 바로 부모 프로세스가 소위 얼어버리는 상황(freezing)이 생기는 것을 확인할 수 있습니다. 그래서 이 문제를 해결하기 위해서 좀 많은 시간이 걸릴 것으로 예상이 됩니다.

+ Recent posts