В чём проблема в моём коде?

Я сделал программу (погода, использовал библиотеку pyowm) на Python и PySide2, сделал интерфейс в Qt Designer, конвертировал его в .py, написал логику, но когда запускаю, вбиваю название города и нажимаю на кнопку, прога вылетает и даёт вот такую ошибку:

Traceback (most recent call last):
  File "main.py", line 18, in weather_city
    observation = owm.weather_at_place(city)
AttributeError: 'OWM' object has no attribute 'weather_at_place'

Вот логика:

import sys, pyowm
from PyQt5 import QtCore, QtGui, QtWidgets
from ui import Ui_MainWindow


app = QtWidgets.QApplication(sys.argv)


MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()

def weather_city():
    owm = pyowm.OWM('a7414723bd773b6f41f5799a084baafa')
    city = ui.lineEdit.text()

    observation = owm.weather_at_place(city)
    w = observation.get_weather()
    temperature = w.get_temperature('celius')['temp']

    ui.label.setText(f'Температура: {temperature}')

ui.pushButton.clicked.connect(weather_city)



sys.exit(app.exec_())

Вот интерфейс (если он чем то поможет):

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(434, 346)
        MainWindow.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0.358, y1:0.398, 
x2:1, y2:1, stop:0 rgba(133, 167, 0, 255), stop:0.596591 rgba(243, 158, 117, 255))")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(100, 240, 241, 51))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.pushButton.setFont(font)
        self.pushButton.setStyleSheet("QPushButton {\n"
"     color: black;\n"
"     background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(90,  167, 
187, 255), stop:0.323864 rgba(135, 230, 181, 255), stop:0.494318 rgba(95, 187, 209, 255), 
stop:0.630682 rgba(152, 152, 232, 255), stop:0.789773 rgba(221, 196, 172, 255), stop:1 rgba(162, 255, 
255, 255));\n"
"     border-radius: 25;\n"
"}\n"
"\n"
"\n"
"QPushButton:hover{\n"
"    background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(56, 196, 145, 
255), stop:0.153409 rgba(93, 198, 104, 255), stop:0.335227 rgba(85, 228, 189, 255), stop:0.494318 
rgba(65, 223, 136, 255), stop:0.676136 rgba(207, 184, 184, 255), stop:0.829545 rgba(180, 255, 145, 
255), stop:1 rgba(140, 248, 70, 255));\n"
"}\n"
"\n"
"QPushButton:pressed{\n"
"    background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0.0113636 rgba(0, 
228, 86, 255), stop:0.142045 rgba(97, 205, 36, 255), stop:0.278409 rgba(16, 171, 72, 255), 
stop:0.4375 rgba(112, 196, 112, 255), stop:0.579545 rgba(148, 241, 148, 255), stop:0.715909 rgba(162, 
255, 108, 255), stop:0.846591 rgba(140, 255, 119, 255), stop:1 rgba(122, 251, 106, 255));\n"
"}")
        self.pushButton.setObjectName("pushButton")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(40, 90, 361, 131))
        font = QtGui.QFont()
        font.setPointSize(14)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setStyleSheet("QLabel {\n"
"color: balck;\n"
"background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(56, 199, 129, 
255), stop:0.147727 rgba(40, 102, 144, 255), stop:0.346591 rgba(2, 108, 88, 255), stop:0.585227 
rgba(128, 226, 149, 255), stop:0.801136 rgba(119, 215, 174, 255), stop:1 rgba(115, 255, 108, 
255));\n"
"border-radius: 23;\n"
"}")
        self.label.setText("")
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(30, 20, 381, 51))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.lineEdit.setFont(font)
        self.lineEdit.setStyleSheet("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, 
y2:1, stop:0 rgba(255, 189, 214, 255), stop:0.323864 rgba(173, 210, 173, 255), stop:0.659091 rgba(61, 
225, 143, 255), stop:1 rgba(212, 192, 255, 255));\n"
"border-radius: 24px;")
        self.lineEdit.setObjectName("lineEdit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 434, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "ПОЛУЧИТЬ"))

UPD: Я изменил свой код в соответствии с ответом в данном мне вопросе, и он выдал вот такую ошибку:

Traceback (most recent call last):
  File "main.py", line 19, in weather_city
    observation = mgr.weather_manager().weather_at_place(city)
AttributeError: 'WeatherManager' object has no attribute 'weather_manager'

Ещё UPD: Я изменил код на:

import sys, pyowm
from PyQt5 import QtCore, QtGui, QtWidgets
from ui import Ui_MainWindow


app = QtWidgets.QApplication(sys.argv)


MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()

def weather_city():
    owm = pyowm.OWM('a7414723bd773b6f41f5799a084baafa')
    city = ui.lineEdit.text()

    mrg = owm.weather_manager()

    observation = city.weather_at_place(city)
    w = observation.get_weather()
    temperature = w.get_temperature('celius')['temp']

    ui.label.setText(f'Температура: {temperature}')

ui.pushButton.clicked.connect(weather_city)


sys.exit(app.exec_())

И выдало такую ошибку:

Traceback (most recent call last):
  File "main.py", line 20, in weather_city
    observation = city.weather_at_place(city)
AttributeError: 'str' object has no attribute 'weather_at_place'

Что делать?


Ответы (0 шт):