Две или три вещи были отключены.
Не забудьте аргументы в ваших функциях, как указывал @ tomh1012.И если вы хотите обновить свой текст, тогда kb
должен принимать два аргумента.
Становится:
def kb(url, text_widget):
Будьте осторожны с отступами, они пропустили один или два (я не знаю, если это такплохая копия / вставка)
Не забудьте ключевое слово lambda:
, если хотите использовать свою команду в качестве лямбда-выражения.(вы забыли это в первой кнопке B
)
Также совет, не стесняйтесь использовать Python IDE, это упрощает многие проблемы с отладкой и синтаксисом (например: https://www.jetbrains.com/pycharm/)
Полный рабочий пример
import requests
from bs4 import BeautifulSoup
import tkinter
from tkinter import *
def kb(url, text_widget):
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
seven_day = soup.find(class_="today_nowcard-container")
forecast_items = seven_day.find_all(class_="today_nowcard-main")
details_items = seven_day.find(class_="today_nowcard-section")
place = seven_day.find(class_="today_nowcard-location").get_text()
daily_temp = seven_day.find(class_="today_nowcard-temp").get_text()
cloud = seven_day.find(class_="today_nowcard-phrase").get_text()
print(place)
print(daily_temp)
print(cloud)
data = ("place" + "cloud")
text_widget.set((place, cloud, daily_temp))
return place, cloud, daily_temp
top = tkinter.Tk()
placevar1 = StringVar()
var2 = kb(url =
"https://weather.com/weather/today/l/ad60b9f8e5bf7d9baa35aefb5e724782692ad6b7a35f43ee43caa4182838eef7", text_widget=placevar1)
label = Label(top, textvariable=placevar1 )
B = tkinter.Button(top, text ="Copenhagen", command = lambda: kb(url="https://weather.com/weather/today/l/DAXX0009:1:DA", text_widget=placevar1))
B2 = tkinter.Button(top, text ="Skanderborg", command= lambda: kb(url =
"https://weather.com/weather/today/l/ad60b9f8e5bf7d9baa35aefb5e724782692ad6b7a35f43ee43caa4182838eef7", text_widget=placevar1))
label.pack()
B.pack()
B2.pack()
top.mainloop()