wir haben ein Projekt in der Schule und wollen eine App mit Tkinter machen. Taschenrechner etc. ist bereits fertig, mit der Wetter App haben wir allerdings ein Problem. Wenn wir diese normal starten, dann funktioniert alles. Als wir diese aber in unsere App eingebaut hatten, hat diese nicht mehr funktioniert. Wir wären sehr dankbar, wenn uns hier jemand weiterhelfen kann. Wir haben diesen Code verwendet:
Code: Alles auswählen
import tkinter as tk
from tkinter import *
from geopy.geocoders import Nominatim
from timezonefinder import TimezoneFinder
from datetime import datetime
import requests
import pytz
import tkinter
def wetter(nav_wetter):
wetter = tk.Toplevel(root)
wetter.title("Weather App")
wetter.geometry("900x500+300+200")
wetter.resizable(False,False)
def getweather():
try:
city=textfield1.get()
geolocator= Nominatim(user_agent="geoapiExercises")
location= geolocator.geocode(city)
obj = TimezoneFinder()
result = obj.timezone_at(lng=location.longitude,lat=location.latitude)
home=pytz.timezone(result)
local_time=datetime.now(home)
current_time=local_time.strftime("%I:%M %p")
clock.config(text=current_time)
name.config(text="CURRENT WEATHER")
#weather
api="https://api.openweathermap.org/data/2.5/weather?q="+city+"&appid=f0915cd70039cc445b2a536701a50cb1"
json_data = requests.get(api).json()
condition = json_data["weather"][0]["main"]
description = json_data["weather"][0]["description"]
temp = int(json_data["main"]["temp"]-273.15)
pressure = json_data["main"]["pressure"]
humidity = json_data["main"]["humidity"]
wind = json_data["wind"]["speed"]
t.config(text=(temp,"°C"))
c.config(text=(condition,"|","Gefühlt",temp,"°C"))
w.config(text=wind)
h.config(text=humidity)
d.config(text=description)
p.config(text=pressure)
except Exception as e:
messagebox.showerror("Weather App","Invalid Entry!!")
#searchbox
Search_image=PhotoImage(file="search.png")
myimage=Label(wetter, image=Search_image)
myimage.place(x=20,y=20)
textfield1=tk.Entry(wetter,justify="center",width=17,font=("poppins",25,"bold"),bg="#404040",border=0,fg="white")
textfield1.place(x=50,y=40)
textfield1.focus()
Search_icon=PhotoImage(file="search_icon.png")
myimage_icon=Button(wetter, image=Search_icon,borderwidth=0,cursor="hand2",bg="#404040",command=getweather)
myimage_icon.place(x=400,y=34)
#logo
Logo_image=PhotoImage(file="logo.png")
logo=Label(wetter, image=Logo_image)
logo.place(x=150,y=100)
#Bottom box
Frame_image=PhotoImage(file="box.png")
frame_myimage=Label(wetter, image=Frame_image)
frame_myimage.pack(padx=5,pady=5,side=BOTTOM)
#time
name=Label(wetter,font=("arial",15,"bold"))
name.place(x=30,y=100)
clock=Label(wetter,font=("Helvetica",20))
clock.place(x=30,y=130)
#label
label1=Label(wetter,text="WIND",font=("Helvetica",15,"bold"),fg="white",bg="#1ab5ef")
label1.place(x=120,y=400)
label2=Label(wetter,text="HUMIDITY",font=("Helvetica",15,"bold"),fg="white",bg="#1ab5ef")
label2.place(x=250,y=400)
label3=Label(wetter,text="DESCRIPTION",font=("Helvetica",15,"bold"),fg="white",bg="#1ab5ef")
label3.place(x=430,y=400)
label4=Label(wetter,text="PRESSURE",font=("Helvetica",15,"bold"),fg="white",bg="#1ab5ef")
label4.place(x=650,y=400)
t=Label(wetter, font=("Bahnschrift 70 bold"),fg="#ee666d")
t.place(x=400,y=150)
c=Label(font=(wetter, "arial",15,"bold"))
c.place(x=400,y=250)
w=Label(wetter, text="Test",font="Arial 50 bold",bg="#1ab5ef")
w.place(x=120,y=430)
h=Label(wetter, text="Test",font="Arial 20 bold",bg="#1ab5ef")
h.place(x=280,y=430)
d=Label(wetter, text="Test",font="Arial 20 bold",bg="#1ab5ef")
d.place(x=450,y=430)
p=Label(wetter, text="Test",font="Arial 20 bold",bg="#1ab5ef")
p.place(x=670,y=430)
standard_farbe = "darkblue"
schrift_standard = "white"
hintergrund = schrift_standard
root = tk.Tk()
root.title("App Name")
root.minsize(600, 500)
root.columnconfigure(0, weight=3)
root.columnconfigure(1, weight=1)
root.configure(bg=schrift_standard)
#nav
#-----------------------------------------------------------------
top_frame = tk.Frame(root, bg="darkblue")
top_frame.pack(side="top", fill=tk.X)
nav_name = tk.Label(top_frame, text="App Name", bg=standard_farbe, font="Bahnschrift 30", fg="white", height=2)
nav_name.pack(side="top")
nav_wetter = tk.Label(top_frame, text="Wetter", bg=standard_farbe, font="Bahnschrift 17", fg="white", height=2, padx=30)
nav_wetter.pack(side="left")
nav_wetter.bind("<Button-1>", wetter)
#-----------------------------------------------------------------
home_label1 = tk.Label(root, height=3, bg=hintergrund, font="Bahnschrift 20", fg="gray", text="Diese Anwendung hilft dir, schneller deine Dinge zu erledigen. \n Wir sind Schüler und wollen anderen Schülern helfen!")
home_label1.pack(side="top")
#bottom
bottom_frame = tk.Frame(root, bg=standard_farbe)
bottom_frame.pack(side="bottom", fill=tk.X)
root.mainloop()
Die angezeigte Temperatur ist zwar korrekt, jedoch wird die ERROR Nachricht angezeigt sowie Daten, wie der Wind nicht. Könnte uns jemand bitte helfen?
Hier sind noch die Bilder (von einem Tutorial): https://drive.google.com/drive/folders/ ... wXrGDjMyRB
Viele Grüße