from kivy.app import App from kivy.uix.label import Label from kivy.uix.boxlayout import BoxLayout from kivy.uix.textinput import TextInput from kivy.core.window import Window from kivy.uix.button import Button from kivy.uix.floatlayout import FloatLayout from kivy.uix.image import Image import requests Window.clearcolor = (1, 1, 1, 1) class Weather(App): def build(self): self.root = FloatLayout() # Background image self.background = Image(source='default.jpg', allow_stretch=True, keep_ratio=False) self.root.add_widget(self.background) # BoxLayout for UI elements self.boxlayout = BoxLayout(orientation="vertical", spacing=20, padding=40, size_hint=(0.9, 0.9), pos_hint={"center_x": 0.5, "center_y": 0.5}) # Widgets self.label = Label(text="Weather App", color=(0, 0, 0, 1), bold=True, font_size=34) self.cityname = TextInput(hint_text="Enter City Name", size_hint_y=None, height=40) self.button = Button(text="Check Weather", size_hint_y=None, height=40, size_hint_x=None, width=200, pos_hint={"center_x": 0.5}, on_press=self.buttonpressed) self.label2 = Label(text="", color=(1,1,1, 1), italic=True, font_size=34) self.label3 = Label(text="", color=(1,1,1, 1), italic=True, font_size=34) self.label4 = Label(text="", color=(1,1,1, 1), italic=True, font_size=34) self.label5 = Label(text="", color=(1,1,1, 1), italic=True, font_size=34) self.label6 = Label(text="", color=(1,1,1, 1), italic=True, font_size=34) self.label7 = Label(text="", color=(1,1,1, 1), italic=True, font_size=34) self.label8 = Label(text="", color=(1,1,1, 1), italic=True, font_size=34) # Add widgets to layout self.boxlayout.add_widget(self.label) self.boxlayout.add_widget(self.cityname) self.boxlayout.add_widget(self.button) self.boxlayout.add_widget(self.label2) self.boxlayout.add_widget(self.label3) self.boxlayout.add_widget(self.label4) self.boxlayout.add_widget(self.label5) self.boxlayout.add_widget(self.label6) self.boxlayout.add_widget(self.label7) self.boxlayout.add_widget(self.label8) self.root.add_widget(self.boxlayout) return self.root def buttonpressed(self, instance): api_key = "a0e1e3df147647ebad9110730251105" city = self.cityname.text.strip() if not city: self.label2.text = "Please enter a city name" return url = f"http://api.weatherapi.com/v1/current.json?key={api_key}&q={city}" try: response = requests.get(url) if response.status_code == 200: data = response.json() condition = data["current"]["condition"]["text"].lower() # Change background image based on condition if "sunny" in condition: self.background.source = "sunny.jpg" elif "rain" in condition or "drizzle" in condition: self.background.source = "rainy.jpg" elif "cloud" in condition or "overcast" in condition: self.background.source = "cloudy.jpg" else: self.background.source = "default.jpg" self.background.reload() # Refresh the image # Set weather details self.label2.text = f"City Name : {data['location']['name']}" self.label3.text = f"Region : {data['location']['region']}" self.label4.text = f"Country : {data['location']['country']}" self.label5.text = f"Condition : {data['current']['condition']['text']}" self.label6.text = f"Wind Speed : {data['current']['wind_kph']} kph" self.label7.text = f"Feels Like : {data['current']['feelslike_c']} °C" self.label8.text = f"Temperature : {data['current']['temp_c']} °C" else: self.label2.text = "Error fetching weather data" except Exception as e: self.label2.text = f"Error: {str(e)}" if __name__ == "__main__": Weather().run()
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)