[python] PyQt를 활용한 날씨 정보 애플리케이션 개발

이번 글에서는 PyQt를 사용하여 날씨 정보 애플리케이션을 개발하는 방법에 대해 알아보겠습니다.

PyQt 소개

PyQt는 Python에서 사용할 수 있는 Qt 라이브러리의 Python 바인딩입니다. Qt는 사용자 인터페이스(UI) 개발을 위한 강력한 프레임워크로, 다양한 플랫폼에서 사용할 수 있습니다. PyQt는 이 강력한 UI 개발 도구를 Python에서 사용할 수 있게 해줍니다.

날씨 정보 API

우리는 날씨 정보를 제공하는 외부 API로부터 데이터를 가져와야 합니다. 이를 위해 우리는 OpenWeatherMap API를 사용하겠습니다. OpenWeatherMap은 실시간 날씨 데이터를 제공하는 인기있는 서비스입니다.

애플리케이션 요구사항

우리의 날씨 정보 애플리케이션은 다음과 같은 요구사항을 갖습니다:

애플리케이션 구조

우리의 애플리케이션은 크게 세 가지 구성 요소로 이루어집니다:

  1. UI 디자인: PyQt 라이브러리를 사용하여 UI를 디자인합니다. 이는 PyQt의 다양한 위젯과 레이아웃 매니저를 사용하여 구현할 수 있습니다.
  2. API 통신: OpenWeatherMap API와 통신하여 날씨 정보를 가져옵니다. 이를 위해 requests 라이브러리를 사용합니다.
  3. UI 업데이트: API로부터 받은 날씨 정보를 UI에 업데이트합니다.

코드 예시

import sys
import requests
from PyQt5.QtWidgets import QApplication, QLabel, QLineEdit, QPushButton, QVBoxLayout, QWidget

class WeatherApp(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("날씨 정보 애플리케이션")

        self.city_label = QLabel("도시 명:")
        self.city_input = QLineEdit()
        self.search_button = QPushButton("검색")
        self.weather_label = QLabel()

        self.layout = QVBoxLayout()
        self.layout.addWidget(self.city_label)
        self.layout.addWidget(self.city_input)
        self.layout.addWidget(self.search_button)
        self.layout.addWidget(self.weather_label)

        self.setLayout(self.layout)

        self.search_button.clicked.connect(self.get_weather)

    def get_weather(self):
        city = self.city_input.text()
        api_key = "YOUR_API_KEY"
        url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
        response = requests.get(url)
        weather_data = response.json()

        weather_description = weather_data["weather"][0]["description"]
        temperature = weather_data["main"]["temp"]
        humidity = weather_data["main"]["humidity"]

        self.weather_label.setText(f"날씨: {weather_description}\n온도: {temperature}\n습도: {humidity}%")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    weather_app = WeatherApp()
    weather_app.show()
    sys.exit(app.exec_())

위의 코드 예시는 PyQt를 사용하여 간단한 날씨 정보 애플리케이션을 구현한 것입니다. 사용자가 도시 이름을 입력하고 검색 버튼을 클릭하면 OpenWeatherMap API를 통해 해당 도시의 날씨 정보를 가져와 UI에 업데이트합니다.

참고 자료