[python] PyQt에서의 네트워크 통신

PyQt는 파이썬으로 GUI 애플리케이션을 개발하기 위한 도구입니다. 이를 사용하면 사용자 인터페이스를 만들고 다양한 기능을 추가할 수 있습니다. 그 중 하나는 네트워크 통신 기능입니다. PyQt의 QNetworkAccessManager 클래스를 사용하면 HTTP 요청을 보내고 응답을 받는 등의 작업을 처리할 수 있습니다.

QNetworkAccessManager

QNetworkAccessManager는 네트워크 통신을 관리하는 클래스입니다. 다음과 같이 객체를 생성할 수 있습니다.

from PyQt5.QtNetwork import QNetworkAccessManager

manager = QNetworkAccessManager()

GET 요청 보내기

GET 요청을 보내기 위해서는 get 메소드를 사용합니다. 다음은 예시 코드입니다.

from PyQt5.QtCore import QUrl
from PyQt5.QtNetwork import QNetworkRequest

url = QUrl("https://api.example.com/data")
request = QNetworkRequest(url)

reply = manager.get(request)
reply.finished.connect(on_reply_finished)

위의 코드에서 on_reply_finished 함수는 요청에 대한 응답이 도착했을 때 호출됩니다. 예를 들어, 응답을 처리하거나 에러를 처리하는데 사용할 수 있습니다.

POST 요청 보내기

POST 요청을 보내기 위해서는 post 메소드를 사용합니다. 다음은 예시 코드입니다.

from PyQt5.QtCore import QUrl, QUrlQuery
from PyQt5.QtNetwork import QNetworkRequest

url = QUrl("https://api.example.com/data")
request = QNetworkRequest(url)
data = QUrlQuery()
data.addQueryItem("key", "value")

reply = manager.post(request, data.toString(QUrl.FullyEncoded).encode())
reply.finished.connect(on_reply_finished)

POST 요청을 보낼 때는 요청 본문에 데이터를 실어 보내야 합니다. QUrlQuery 클래스를 사용하여 데이터를 추가하고, toString 메소드를 호출해 인코딩된 문자열로 변환한 후 요청에 실어 보냅니다.

기타

PyQt의 QNetworkAccessManager 클래스는 다양한 기능과 메소드를 제공합니다. 아래는 몇 가지 유용한 메소드의 예시입니다.

더 자세한 내용은 PyQt 공식 문서를 참고하시기 바랍니다.