Проблема с OpenWeatherMap pyowm с tkinter - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу написать небольшое приложение о погоде. Я использую модули pyowm и tkinter, и у меня есть небольшая проблема, которую я не знаю, как решить. Помогите мне, пожалуйста :) Я хочу, чтобы результат погоды отображался в ярлыке под кнопкой. Это мой код:

from tkinter import *
import pyowm


def open_weather_map():
    owm = pyowm.OWM('061c88a24ac0ad18ae22534accea424a')
    city_name = entry1.get()
    observation = owm.weather_at_place()
    w = observation.get_weather()
    temp = w.get_temperature(unit = 'celsius')
    label1['text'] = temp

window = Tk()
window.geometry('400x500')
window.title('Weather')

entry1 = Entry(window, width = 25, font = ('Arial', 14))
entry1.pack()

button1 = Button(window, text = 'Submit', font = ('Arial', 16))
button1.pack()

label1 = Label(window, font = ('Arial', 20, 'bold'))
label1.pack()

button1.bind("<Button-1>", open_weather_map)
window.mainloop()

Ошибка:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\asgor\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
TypeError: open_weather_map() takes 0 positional arguments but 1 was given

1 Ответ

0 голосов
/ 25 февраля 2020

Tkinter автоматически передает аргумент события обработчикам событий. Вам нужно изменить определение open_weather_map() на:

def open_weather_map(event):

В качестве альтернативы, вы можете оставить определение без изменений, удалить

button1.bind("<Button-1>", open_weather_map)

и добавить command=open_weather_map к button1:

button1 = Button(window, text = 'Submit', font = ('Arial', 16), command=open_weather_map)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...