城市天气预报.py程序可通过QT6可视化窗口获取用户输入的城市名,查询输入城市未来一周的天气预报数据,再显示输出
时间: 2023-06-27 21:04:05 浏览: 153
下面是一个基于QT6的城市天气预报可视化程序的简单示例:
```python
import requests
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout
class WeatherApp(QWidget):
def __init__(self):
super().__init__()
self.city_label = QLabel('请输入城市名:')
self.city_input = QLineEdit()
self.search_button = QPushButton('查询')
self.result_label = QLabel()
self.layout = QVBoxLayout()
self.init_ui()
def init_ui(self):
self.setWindowTitle('城市天气预报')
self.layout.addWidget(self.city_label)
self.layout.addWidget(self.city_input)
self.layout.addWidget(self.search_button)
self.layout.addWidget(self.result_label)
self.setLayout(self.layout)
self.search_button.clicked.connect(self.search_weather)
def search_weather(self):
city_name = self.city_input.text()
url = f'http://wthrcdn.etouch.cn/weather_mini?city={city_name}'
response = requests.get(url)
if response.status_code == 200:
weather_data = response.json().get('data')
if weather_data:
forecast = weather_data.get('forecast')
result = ''
for day in forecast:
result += f"{day.get('date')} {day.get('type')} {day.get('high')} {day.get('low')}\n"
self.result_label.setText(result)
else:
self.result_label.setText('未查询到该城市的天气信息!')
if __name__ == '__main__':
app = QApplication([])
weather_app = WeatherApp()
weather_app.show()
app.exec()
```
上述代码中,我们首先引入 `requests` 库用于访问天气数据接口;然后使用 `PyQt6` 库中的各个组件构建出一个简单的可视化界面,包括一个文本标签、一个文本框、一个按钮和一个文本框用于显示查询结果;接着在查询按钮被单击时,获取用户输入的城市名,构造天气数据接口的URL,并使用 `requests` 库访问该接口以获取查询结果;最后,根据查询结果构造一个字符串并在结果文本框中显示。
阅读全文