pyqt5 질문 드립니다.
조회수 710회
최근 pyqt5로 간단한 socket 채팅 프로그램을 만들어 보고 있습니다.
이 과정에서 combobox를 이용하여 font의 색상을 결정할 수 있는 색상 파레트를 만들고 싶은데
combobox item에 색상을 넣는 방법이 궁금합니다.
두번째로는 socket 다중 채팅 프로그램에서 서버의 recv를 thread로 구현하였는데 기본으로 제공하는
윈도우 창의 X표시가 아닌 직접 구현한 종료 버튼에서 문제가 발생합니다.
app.quit() , sys.exit(1) 등을 이용하여 종료 버튼을 구현 하였는데
해당 버튼 클릭시 프로그램이 멈추는 현상이 나타납니다.
예상되는 현상을 thread가 동작하고 있어서 그런 것 같은데
thread의 종료 방법이 궁금합니다.
답변 부탁 드립니다. 감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
당연히 graceful 하게 종료시켜야 합니다.
분명 recv는 무한루프를 돌고 대기하고 있을 겁니다.
데이터를 리스닝하는 부분에서 단순 무한루프 말고 어떤 시그널일때 탈출할 수 있도록 코드를 구성하고 탈출후에sock.shutdown(socket.SHUT_RDWR) 호출하고 sock.close() 를 호출하는 식으로 종료처리를 해야 합니다.
https://docs.python.org/ko/3/howto/sockets.html#disconnecting
상기 링크를 참조하세요
그리고 이것은 오래전에 북마크해두었던건데
이 글도 읽어보세요.
댓글 입력