class Weather(QWidget): def __init__(self): super().__init__() self.setWindowTitle('Weather') self.setWindowIcon(QIcon('umbrella.png')) self.resize(300, 120) self.ui() self.show() def ui(self): vbox = QVBoxLayout() title = QLabel() title.setText('Weather') title.setStyleSheet('font: 20pt') title.setAlignment(Qt.AlignCenter) vbox.addWidget(title) hbox = QHBoxLayout() label = QLabel() label.setText('City Name:') label.setStyleSheet('font: 15px') self.textLine = QLineEdit() self.textLine.setMinimumHeight(30) hbox.addWidget(label) hbox.addWidget(self.textLine) vbox.addItem(hbox) button = QPushButton() button.setText('Search') button.setStyleSheet('font: 15px') button.setMinimumHeight(30) button.clicked.connect(self.checkText) vbox.addWidget(button) self.setLayout(vbox) def checkText(self): if not self.textLine.text().isalpha(): message = QErrorMessage(self) message.showMessage('Invalid Entry! Try Again.') message.setWindowTitle('Warning') message.setWindowIcon(QIcon('error.png')) else: location = self.textLine.text() url = weather_url + location global json json = requests.get(url).json() try: json['message'] except Exception: self.obj = ShowWeather() else: message = QErrorMessage(self) message.showMessage('Invalid City Name! Try Again.') message.setWindowTitle('Warning') message.setWindowIcon(QIcon('error.png'))