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
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83638.shtml
英文地址,請注明出處:http://en.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;無需編譯即可…