Weatherly is a modern, elegant desktop weather application built with Python and PySide6 (Qt for Python).
It fetches real-time weather and forecast data using the OpenWeatherMap API, automatically detects your current location, and provides a sleek, responsive UI that feels professional and fast.
-
Automatic Location Detection
Weatherly detects your current city via IP-based geolocation and instantly loads your local weather on startup. -
Search Any City
Type a city name and hit Enter or Search to see its real-time temperature, weather icon, and 5-day forecast. -
Live Data from OpenWeatherMap
Weatherly uses the free/data/2.5/forecastAPI from OpenWeatherMap to display:
- Current temperature
- Hourly forecast (next few hours)
- 7-day forecast with daily highs and lows
- Basic air condition details (rain chance, wind, UV, etc.)
- Beautiful UI Built with PySide6
- Minimal, clean design using Qt widgets and layouts
- Styled with custom QSS themes
- Sidebar icons for easy navigation
- Responsive layout for large and small screens
-
Async Weather Fetching with Preloader
All data requests run in background threads — the UI never freezes.
The Search button changes to “Loading…” while data is being fetched. -
Modular Project Structure
Organized intocoreanduilayers for clean separation of logic, services, and presentation.
git clone https://github.com/danieludokike/Weatherly.git
cd Weatherly
2. Create a Virtual Environment
python -m venv env
source env/bin/activate # (Linux/macOS)
env\Scripts\activate # (Windows)
3. Install Dependencies
pip install -r requirements.txt
API_KEY=your_openweathermap_api_key
UNITS=metric
You can get your free API key from:
https://home.openweathermap.org/api_keys
Make sure your key is active and you’re using the free forecast API endpoint:
https://api.openweathermap.org/data/2.5/forecast
▶️ Run the App
python main.py
You’ll see a window titled “Weatherly” open with:
Your current location’s weather (auto-detected)
Search bar to fetch other cities
5-day forecast and hourly summary
API Reference
Weatherly uses:
Forecast API: /data/2.5/forecast
Parameters:
q: city name
appid: your API key
units: metric or imperial
Geolocation API: http://ip-api.com/json
No key required (used to detect user’s city)
Technical Highlights
Layer Description
Core Contains data logic, config, and weather service (API fetching).
UI Handles presentation and user interaction.
Threading Weather fetching runs in a background thread to avoid freezing the interface.
Styling Custom Qt stylesheet (dark_theme.qss) for a clean, professional dark mode look.
Separation of Concerns Logic, UI, and data models are all kept independent.
Contributions are welcome!
If you’d like to improve Weatherly:
Fork this repository
Create a new branch (git checkout -b feature-name)
Commit your changes (git commit -m "Added feature XYZ")
Push to your fork (git push origin feature-name)
Submit a Pull Request
License
This project is licensed under the MIT License — feel free to use, modify, and distribute.
Author
Udokike Daniel
Python Developer | Educator | Open Source Contributor
Nigeria
• https://github.com/danieludokike/Weatherly
• https://www.linkedin.com/in/udokike-daniel-ba9148210