python编写赛博朋克风格天气查询程序

工具介绍

  • 这个天气查询工具是一个基于 Python 的桌面应用程序,使用了tkinter库来创建图形用户界面(GUI),并通过requests库调用 Open - Meteo API 获取天气数据。它具有赛博朋克风格的界面设计,提供了当前天气信息、15 天天气预报以及详细的天气数据展示,同时还包含温度趋势图表。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

工具使用说明

界面布局

  • 顶部标题栏:显示应用名称 “赛博朋克风格天气查询”。

搜索区域:

  • 输入框:可以输入要查询的城市名称,默认显示为 “北京”。
  • 查询按钮:点击该按钮可以查询输入城市的天气信息。

标签页:

  • 当前天气:显示当前城市的天气信息,包括城市名称、日期、天气状况、温度、体感温度以及一些基本的天气数据(如湿度、风速等)。
  • 15 天预报:包含未来 15 天的温度趋势图表和每天的天气预报卡片,卡片显示日期、星期、天气状况、最高温度和最低温度。
  • 详细信息:显示更详细的天气数据,如日出时间、日落时间、日照时长、风向等。

查询天气

  1. 在输入框中输入要查询的城市名称。
  2. 点击 “查询天气” 按钮。
  3. 应用会显示加载中指示器,同时在后台线程中获取天气数据。
  4. 获取数据成功后,更新各个标签页的内容,显示该城市的天气信息;如果获取数据失败,会弹出错误提示框。

功能特点

  1. 多信息展示:提供当前天气、15 天预报和详细天气信息,满足用户对不同时间尺度天气数据的需求。
  2. 图表可视化:通过matplotlib库绘制未来 15 天的温度趋势图表,直观展示温度变化。
  3. 赛博朋克风格:使用赛博朋克风格的颜色和字体,界面设计独特。
  4. 多线程处理:在新线程中获取天气数据,避免阻塞 UI,保证用户交互的流畅性。
  5. 错误处理:在获取数据或更新界面失败时,会弹出错误提示框,告知用户具体的错误信息。

python脚本内容

import tkinter as tk
from tkinter import ttk, messagebox
import requests
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
import threading# 设置中文字体
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]class WeatherApp:def __init__(self, root):self.root = rootself.root.title("赛博天气 - 未来气象预测")self.root.geometry("800x700")self.root.configure(bg="#0A0E17")# 赛博朋克风格颜色self.colors = {'neon_blue': '#00F0FF','neon_purple': '#BF00FF','neon_pink': '#FF00FF','neon_green': '#00FF9C','dark_900': '#0A0E17','dark_800': '#141E30','dark_700': '#1A2940'}# 创建加载中指示器self.loading_frame = Noneself.loading_label = None# 创建UIself.create_widgets()# 初始加载北京天气self.get_weather("北京")def create_widgets(self):# 顶部标题栏title_frame = tk.Frame(self.root, bg=self.colors['dark_900'], bd=2, relief=tk.SOLID)title_frame.pack(fill=tk.X, pady=(0, 10))title_label = tk.Label(title_frame, text="赛博朋克风格天气查询", font=("SimHei", 20, "bold"),bg=self.colors['dark_900'],fg=self.colors['neon_blue'],bd=0,highlightthickness=0)title_label.pack(pady=10)# 搜索区域search_frame = tk.Frame(self.root, bg=self.colors['dark_900'])search_frame.pack(fill=tk.X, padx=20, pady=10)self.city_entry = ttk.Entry(search_frame, font=("SimHei", 12),width=30,background=self.colors['dark_800'],foreground=self.colors['neon_blue'])self.city_entry.pack(side=tk.LEFT, padx=(0, 10), ipady=5)self.city_entry.insert(0, "北京")search_btn = ttk.Button(search_frame, text="查询天气", command=self.search_weather,style='Neon.TButton')search_btn.pack(side=tk.LEFT, ipady=5)# 创建标签页notebook = ttk.Notebook(self.root)notebook.pack(fill=tk.BOTH, expand=True, padx=20, pady=10)# 当前天气标签页current_frame = ttk.Frame(notebook)notebook.add(current_frame, text="当前天气")# 15天预报标签页forecast_frame = ttk.Frame(notebook)notebook.add(forecast_frame, text="15天预报")# 详细信息标签页details_frame = ttk.Frame(notebook)notebook.add(details_frame, text="详细信息")# 构建各标签页内容self.build_current_weather_frame(current_frame)self.build_forecast_frame(forecast_frame)self.build_details_frame(details_frame)# 配置自定义样式self.configure_styles()def configure_styles(self):style = ttk.Style()# 配置TButton样式style.configure('TButton', font=("SimHei", 10),background=self.colors['dark_800'],foreground=self.colors['neon_blue'],borderwidth=1,relief=tk.RAISED)# 赛博朋克风格按钮style.configure('Neon.TButton', font=("SimHei", 10, "bold"),background=self.colors['neon_blue'],foreground=self.colors['dark_900'],borderwidth=0,relief=tk.FLAT)style.map('Neon.TButton', background=[('active', self.colors['neon_pink'])])# 配置标签样式style.configure('TLabel', font=("SimHei", 10),background=self.colors['dark_900'],foreground="white")# 标题样式style.configure('Title.TLabel', font=("SimHei", 16, "bold"),foreground=self.colors['neon_blue'])# 子标题样式style.configure('Subtitle.TLabel', font=("SimHei", 12, "bold"),foreground=self.colors['neon_purple'])# 数据标签样式style.configure('Data.TLabel', font=("SimHei", 14, "bold"),foreground="white")# 数据值样式style.configure('Value.TLabel', font=("SimHei"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/83638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从二叉树到 STL:揭开 set 容器的本质与用法

前言: 上次介绍完二叉搜索树后,更新中断了一段时间,先向大家致歉。最近学习状态有些起伏,但我正在努力调整,相信很快会恢复节奏。今天我们继续深入探讨——关联容器,它在算法和工程中都非常常见和重要。 1…

uv管理spaCy语言模型

本文记录如何在使用uv管理python项目dependencies时,把spaCy的模型也纳入其中. spaCy 一、spaCy简介 spaCy是一个开源的自然语言处理(NLP)库,它主要用于处理文本数据。它支持多种语言,包括英语、中文等。它是由Expl…

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…

Rust 学习笔记:Box<T>

Rust 学习笔记&#xff1a;Box Rust 学习笔记&#xff1a;Box<T\>Box\<T> 简介使用 Box\<T\> 在堆上存储数据启用带有 box 的递归类型关于 cons 列表的介绍计算非递归类型的大小使用 Box\<T\> 获取大小已知的递归类型 Rust 学习笔记&#xff1a;Box<…

英语写作中“不少于(小于)”no less than替代no fewer than的用法

no less than 1 liter of water&#xff0c;no fewer than 100 people 是我们的传统用法。现代英语有一个有趣的现象&#xff0c;就是less 代替fewer 形容可数名词&#xff0c;例如&#xff1a; Do you have 10 courses each week? No. We have less. 显然按严格语法应该是…

竞品分析六大步骤

一、引言 在产品打磨、市场推广或战略定位过程中&#xff0c;我们常常会面临一个关键任务——竞品分析。一份系统的竞品分析不仅能帮助我们知己知彼&#xff0c;优化产品策略&#xff0c;更能成为决策层制定方向的重要依据。竞品分析到底该怎么做&#xff1f;今天我将结合自己的…

【Java Web】9.Maven高级

&#x1f4d8;博客主页&#xff1a;程序员葵安 &#x1faf6;感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb; 文章目录 一、分模块设计与开发 1.1 介绍 1.2 实践 二、继承与聚合 2.1 继承 继承关系 版本锁定 2.2 聚合 2.3 继承与聚合对比 三、…

MySQL 全量、增量备份与恢复

一.MySQL 数据库备份概述 备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等。之前已经学习过如何安装 MySQL&#xff0c;本小节将从生产运维的角度了解备份恢复的分类与方法。 1 数据备份的重要性 在企业中数据的价值至关…

第六个微信小程序:教师工具集

源于工作需要&#xff0c;下面开始。 安装及使用 | Taro 文档 vscode 代码管理 git 辅助 开发技术如上&#xff1a; 1.开始创建模板 taro4.1.1 $ taro init teachers-tools 2.用vsocde开始吧。 选择 第二个文件夹找一。 (base) PS D:\react\teachers-tools> pnpm…

Linux 里 su 和 sudo 命令这两个有什么不一样?

《小菜狗 Linux 操作系统快速入门笔记》目录&#xff1a; 《小菜狗 Linux 操作系统快速入门笔记》&#xff08;01.0&#xff09;文章导航目录【实时更新】 Linux 是一个多用户的操作系统。在 Linux 中&#xff0c;理论上来说&#xff0c;我们可以创建无数个用户&#xff0c;但…

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …

服务器被攻击了怎么办

可以上一个高防IP或者AI云防护都是可以的。&#xff08;有效防御CC、APl接口、http、tcp、WEB应用扫描/爬虫、SYN、WAF、DDOS、UDP、入侵、渗透、SQL注入、XSS跨站脚本攻击、远程恶意代码执行、session fixation、Webshell攻击、恶意请求&#xff0c;恶意扫描、暴力破解、CSRF等…

【学习笔记】Circuit Tracing: Revealing Computational Graphs in Language Models

Circuit Tracing: Revealing Computational Graphs in Language Models 替代模型(Replacement Model)&#xff1a;用更多的可解释的特征来替代transformer模型的神经元。 归因图(Attribution Graph)&#xff1a;展示特征之间的相互影响&#xff0c;能够追踪模型生成输出时所采用…

灵活控制,modbus tcp转ethernetip的 多功能水处理方案

油田自动化和先进的油气行业软件为油气公司带来了诸多益处。其中包括&#xff1a; 1.自动化可以消除多余的步骤、减少人为错误并降低运行设备所需的能量&#xff0c;从而降低成本。 2.油天然气行业不断追求高水平生产。自动化可以更轻松地减少计划外停机时间&#xff0c;从而…

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…

windows VeraCrypt – 磁盘加密工具

下载链接&#xff1a;夸克网盘分享 VeraCrypt一款跨平台(Windows/Mac/Linux)的磁盘加密工具&#xff0c;提供多层级数据保护方案&#xff1a;虚拟加密盘&#xff1a;在文件中创建可挂载的加密虚拟磁盘全设备加密&#xff1a;支持分区/USB/硬盘等存储设备的全盘加密系统盘加密&…

客户体验数据使用的三种视角——场景视角

当企业收集到大量的客户体验数据之后&#xff0c;应该如何应用&#xff1f;有哪些主要的使用场景和分析视角&#xff1f;体验家团队通过三篇文章&#xff0c;陆续介绍三种体验数据的使用场景&#xff0c;以帮助企业更有效地利用体验数据进行改进。 01 宏观层次的“旅程视角” …

时序数据库IoTDB的UDF Sample算法在数据监控、故障预防的应用

一、数据监控在工业物联网中的重要性 设备数据监控是工业物联网&#xff08;IoT&#xff09;中最为广泛应用的领域之一。通过实时监控工厂机械设备的运行状态&#xff0c;企业能够提前发现设备的潜在故障&#xff0c;从而实现预防性维护与可预测性维护。这一做法不仅能有效提升…

fastadmin fildList 动态下拉框默认选中

html页面 <td><select class"form-control dtselect" data-rule"required" data-dtselected"<%row.type%>" name"<%name%>[<%index%>][type]">{foreach nametypeList idvo}<option value"{$vo…

Python 入门到进阶全指南:从语言特性到实战项目

一、Python 简介 Python 是一种高级、跨平台、解释型编程语言&#xff0c;以简洁语法和高可读性著称&#xff0c;既适合编程初学者快速入门&#xff0c;也能满足资深开发者的复杂需求。其核心特性与应用场景如下&#xff1a; 核心特性解析 解释型语言&#xff1a;无需编译即可…