日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 天气预报地图_在树莓派上用 python 做一个炫酷的天气预报

發(fā)布時間:2023/12/18 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 天气预报地图_在树莓派上用 python 做一个炫酷的天气预报 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#encoding: utf-8

importpygameimporttimeimportweatherAPIimportSystemInfofrom datetime importdatetime#顯示圖片函數(shù)

defShowPicture(picturepath,x0,y0):

background=pygame.image.load(picturepath)

background.convert_alpha()

window.blit(background,(x0,y0))return

defShowCircle():

pygame.draw.circle(window,pygame.Color(255,255,255),(width/2,height/2),radius,fill)return

#劃線函數(shù),起始坐標(biāo),終點坐標(biāo)

defShowLine(x0,y0,x1,y1):

pygame.draw.line(window,pygame.Color(255,255,255),(x0,y0),(x1,y1),fill)returnYellow=(255,255,0)

Red=(255,0,0)

LightBlue=(190,190,255)

Green=(0,255,0)

Black=(0,0,0)

White=(255,255,255)#畫框函數(shù)

defShowRec(x0,y0,x1,y1,color,fill):

pygame.draw.rect(window,color,(x0,y0,x1,y1),fill)return

#字符串顯示函數(shù)

defShowStr(mystring,x0,y0,size):

font=pygame.font.Font('gkai00mp.ttf',size,bold=1)

textSuface=font.render(mystring,1,pygame.Color(255,255,255))

window.blit(textSuface,(x0,y0))return

defShowStr2(mystring,x0,y0,size):

font=pygame.font.Font('gkai00mp.ttf',size,bold=1)

textSuface=font.render(mystring,1,pygame.Color(255,255,0))

window.blit(textSuface,(x0,y0))return

defShowStr3(mystring,x0,y0,size):

font=pygame.font.Font('gkai00mp.ttf',size,bold=1)

textSuface=font.render(mystring,1,pygame.Color(0,255,0))

window.blit(textSuface,(x0,y0))return

#背景參數(shù)設(shè)置

width=1280height=800fill=1

#初始化背景

pygame.init()

window=pygame.display.set_mode((width,height),pygame.FULLSCREEN)#全屏#window=pygame.display.set_mode((width,height))#不全屏

window.fill(pygame.Color(0,0,0))#back=pygame.image.load(r"/home/pi/ccj/c.jpg") #圖片位置

loop=0

last_ip= ip = ''updatingtime=""Title_X=width

WeatherValidation=FalsewhileTrue:#window.blit(back,(0,0)) #對齊的坐標(biāo)

window.fill(pygame.Color(0,0,0)) #背景色0為黑

#ShowPicture("a_3.gif",20,450)

#draw grids

#ShowStr(u"時間",10,20,80)

ShowRec(10,10,width-20,height-80,White,1) #畫一個大框

ShowLine(10,height/5,width-10,height/5)

ShowLine(10,height/5*3,width-10,height/5*3)

ShowLine(width/2,height/5,width/2,height-70)

ShowLine(width/4,height/5*3,width/4,height-70)

ShowLine(width/4*3,height/5*3,width/4*3,height-70)#time show

mylocaltime=time.localtime()

myclock=time.strftime("%H:%M:%S",mylocaltime)#13:15:03 2017-04-21

ShowStr(myclock,0,0,180)

mydate=time.strftime("%Y-%m-%d",mylocaltime)#2017-04-21

ShowStr(mydate,810,5,90)

mytime=time.strftime("%A",mylocaltime)#Thursday

ShowStr(mytime,830,90,85)

name= "自動化實驗室歡迎您"ShowStr2(name,width/2+10,height/5*2-140,52)

ip= SystemInfo.get_ip('wlan0')#ip = SystemInfo.get_ip('eth0')

cpu_usage =SystemInfo.getCPUuse()

ShowStr(ip,width/2+100,height/5*2-90,48)

ShowStr("ip:",width/2+10,height/5*2-90,52)#netspeed show

NetInfoOld=SystemInfo.net_stat()

time.sleep(1)

NetInfoNew=SystemInfo.net_stat()

DownloadSpeed=(NetInfoNew[0]["ReceiveBytes"]-NetInfoOld[0]["ReceiveBytes"])/1048576 #last second total flow -current second total flow

UploadSpeed=(NetInfoNew[0]["TransmitBytes"]-NetInfoOld[0]["TransmitBytes"])/1048576ShowRec(width/2+20,height/5*2-40,DownloadSpeed/10*600+20,48,Green,0)

ShowRec(width/2+20,height/5*2+10,UploadSpeed/10*600+20,48,LightBlue,0)

ShowStr("↓:"+str("%3.2f"%(DownloadSpeed))+"MB/s",width/2+20,height/5*2-40,48)

ShowStr("↑:"+str("%3.2f"%(UploadSpeed))+"MB/s",width/2+20,height/5*2+10,48)#cpu_usage show

ShowRec(width/2+20,height/5*2+60,cpu_usage/100*600+60,48,Yellow,0)

ShowStr("CPU usage:"+str("%2d"%cpu_usage)+"%",width/2+20,height/5*2+110,48)if loop % 60==0 :

future= datetime.strptime('2019-1-1 00:00:00','%Y-%m-%d %H:%M:%S')#當(dāng)前時間

now =datetime.now()#求時間差

delta = future -now

hour= delta.seconds/60/60minute= delta.seconds/60seconds= delta.seconds - hour*60*60 - minute*60

#print_now=now.strftime('%Y-%m-%d %H:%M:%S')

#print("今天是:",print_now)

#print("距離 2019-02-01 \"work\" 還剩下:%d天"%delta.days)

#print(delta.days,hour, minute, seconds)

ShowStr2("倒計時:%dH (%dMin)"%(hour,minute),width/4*2+width/32+20,height/5*3+height/30+235,45)##########################本地信息獲取完成#######################################

#print ("↓:"+str("%3.1f"%(DownloadSpeed))+"MB/s")

#print ("↑:"+str("%3.1f"%(UploadSpeed))+"MB/s")

#print("CPU usage:"+str("%2d"%cpu_usage)+"%")

#########weather show####################################

if loop % 10800==0 : #update per 3 hours

jsonArr=weatherAPI.GetWeatherInfo()if jsonArr!=None : #記錄請求數(shù)據(jù)時間

updatingtime=time.strftime("%H:%M:%S",mylocaltime)if jsonArr["status"]!="1":print (jsonArr["msg"])

WeatherValidation=Falseelse:

result=jsonArr["forecasts"][0]

WeatherValidation=True#print (result["city"],result["weather"],result["temp"],result["temphigh"],result["templow"])

if WeatherValidation==True:#AQI=result["aqi"]

#index=result["index"]

#index0=index[0]

#daily=result["daily"]

#day1=daily[1]#明天天氣預(yù)報

#day2=daily[2]#明天天氣預(yù)報

#day3=daily[3]#明天天氣預(yù)報

#day4=daily[4]#明天天氣預(yù)報

### #室外溫濕度

#ShowPicture("pictures/"+result["img"]+".png",width/16,height/5+150)

ShowStr("武漢市",width/32,height/5+10,60)

ShowStr(result["city"],width/32,height/5+80,60)

ShowStr(result["casts"][0]["dayweather"],width/32-25,height/5*2+50,120)

ShowStr(result["casts"][0]["daytemp"]+"℃",width/4,height/5,160)

ShowStr("氣溫最低:"+result["casts"][0]["nighttemp"] +"℃",width/4-10,height/5*2-20,48)

ShowStr("接下來轉(zhuǎn):"+result["casts"][0]["nightweather"],width/4-10,height/5*2+50,48)#ShowStr("zhesgii",width/2+20,height/5+10,120)

ShowStr("風(fēng)力:"+result["casts"][0]["daypower"]+"級",width/4-10,height/5*2+110,48)### #空氣質(zhì)量

#ShowStr("PM2.5:",width/2+280,height/5+120,32)

#ShowStr(AQI["pm2_5"],width/2+400,height/5-20,200)

#ShowStr("空氣質(zhì)量:"+AQI["quality"],width/2+240,height/5*2-40,32)

ShowPicture("pictures/"+result["casts"][0]["dayweather"]+".png",width/32+60,height/5+145)#if Title_X<=-100:

#Title_X=width

#else:

#Title_X=Title_X-40

#ShowStr(index0["detail"],Title_X,height-50,40)

##未來幾天天氣預(yù)報

ShowStr("明天:"+result["casts"][1]["date"],width/32,height/5*3+height/30-10,30)

ShowStr(result["casts"][1]["dayweather"],width/32,height/5*3+height/30+30,50)

ShowStr(result["casts"][2]["daytemp"]+"℃",width/32,height/5*3+height/30+80,70)

ShowStr("氣溫Min:"+result["casts"][1]["nighttemp"] +"℃",width/32-10,height/5*3+height/30+140,45)

ShowStr("未來轉(zhuǎn):"+result["casts"][1]["nightweather"],width/32-10,height/5*3+height/30+180,45)

ShowPicture("pictures/"+result["casts"][1]["dayweather"]+".png",width/32+170,height/5*3+height/30+45)#ShowPicture("pictures/"+day1["day"]["img"]+".png",width/32,height/5*3+height/10)

###

ShowStr("后天:"+result["casts"][2]["date"],width/4+width/32,height/5*3+height/30-10,30)

ShowStr(result["casts"][2]["dayweather"],width/4+width/32,height/5*3+height/30+30,50)

ShowStr(result["casts"][2]["daytemp"]+"℃",width/4+width/32,height/5*3+height/30+80,70)

ShowStr("氣溫Min:"+result["casts"][2]["nighttemp"] +"℃",width/4+width/32-10,height/5*3+height/30+140,45)

ShowStr("未來轉(zhuǎn):"+result["casts"][2]["nightweather"],width/4+width/32-10,height/5*3+height/30+180,45)

ShowPicture("pictures/"+result["casts"][2]["dayweather"]+".png",width/4+width/32+170,height/5*3+height/30+45)#ShowStr(day2["day"]["weather"],width/4+width/32,height/5*3+height/5-40,100)

#ShowStr(day2["day"]["windpower"],width/4+width/32+70,height/5*3+height/10,64)

#ShowStr(day2["night"]["templow"]+"~"+day2["day"]["temphigh"]+"℃",width/4+width/32,height-130,64)

#ShowPicture("pictures/"+day2["day"]["img"]+".png",width/4+width/32,height/5*3+height/10)

###

ShowStr("大后天:"+result["casts"][3]["date"],width/4*2+width/32-25,height/5*3+height/30-10,30)

ShowStr(result["casts"][3]["dayweather"],width/4*2+width/32-25,height/5*3+height/30+30,50)

ShowStr(result["casts"][3]["daytemp"]+"℃",width/4*2+width/32-25,height/5*3+height/30+80,70)

ShowStr("氣溫Min:"+result["casts"][3]["nighttemp"] +"℃",width/4*2+width/32-25,height/5*3+height/30+140,45)

ShowStr("未來轉(zhuǎn):"+result["casts"][3]["nightweather"],width/4*2+width/32-25,height/5*3+height/30+180,45)

ShowPicture("pictures/"+result["casts"][3]["dayweather"]+".png",width/4*2+width/32-25+170,height/5*3+height/30+45)#ShowStr(day3["day"]["weather"],width/4*2+width/32,height/5*3+height/5-40,100)

#ShowStr(day3["day"]["windpower"],width/4*2+width/32+70,height/5*3+height/10,64)

#ShowStr(day3["night"]["templow"]+"~"+day2["day"]["temphigh"]+"℃",width/4*2+width/32,height-130,64)

#ShowPicture("pictures/"+day3["day"]["img"]+".png",width/4*2+width/32,height/5*3+height/10)

###

ShowPicture("pictures/cj.png",width/4*3+width/32,height/5*3+height/30-15)#ShowStr(day4["day"]["weather"],width/4*3+width/32,height/5*3+height/5-40,100)

#ShowStr(day4["day"]["windpower"],width/4*3+width/32+70,height/5*3+height/10,64)

#ShowStr(day4["night"]["templow"]+"~"+day2["day"]["temphigh"]+"℃",width/4*3+width/32,height-130,64)

#ShowPicture("pictures/"+day4["day"]["img"]+".png",width/4*3+width/32,height/5*3+height/10)

##記錄請求數(shù)據(jù)時間

ShowStr3("Last update:"+updatingtime,width/4*3+15,height/5*3,30)

ShowStr2("這里是滾動字幕顯示區(qū),加循環(huán)可實現(xiàn)動態(tài)效果",width/32-25,height/5*3+height/30+235,45)#update

pygame.display.update()

loop+=1

#全屏

#for event in pygame.event.get():

#if event.type==pygame.KEYDOWN:

#running=False

pygame.quit()

總結(jié)

以上是生活随笔為你收集整理的python 天气预报地图_在树莓派上用 python 做一个炫酷的天气预报的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。