pyqt 事件更新图片显示_使用PyQT&树莓派制作一个天气站

296b986984290a3cd2d5a76e9f2c76ec.png

吃灰的很久树莓派 b 偶然翻出来 发挥下余热,系统采用官方固件 Raspberry Pi OS(Raspbian) ,由于我的屏幕时由HDMI 驱动所以无需特殊配置其他驱动(我这装了下卖家给的驱动调整了下屏幕分辨率)

装完系统直接安装PyQt即可 sudo apt-get install python3-pyqt5

代码比较简单 简单说一下,因为时间需要每秒刷新,所以需要用到多线程来防止卡死UI

我们可以重写run方法来实现

class UpdateTime(QThread):
    signal = pyqtSignal(str,str,str)   #括号里填写信号传递的参数类型,调用TimeTick的函数要和这里对应

    def __init__(self):
        super().__init__()

    def __del__(self):
        self.wait()

    def run(self):
        global picInt
        global timeUpdate
        while True:
            timeUpdate = datetime.datetime.now() #每秒获取下时间
            strtime0 = timeUpdate.strftime('%S')

            strtime1 = timeUpdate.strftime('%H:%M:%S') #时 分 秒 
            strtime2 = timeUpdate.strftime('%w') #星期
            strtime3 = timeUpdate.strftime('%m') #月
            strtime4 = timeUpdate.strftime('%d') #日

            self.signal.emit(strtime1,todayWeek(strtime2),str(strtime3+"月"+strtime4+"日"))    # 发射信号

            picInt = int(strtime0)#这里单独存一个秒用来判断换图时间
            time.sleep(1)

获取天气部分 API 处理,完整的json 格式说明详见工程中的 jsonInfo/天气模板.json

工程中还附有一个城市代码,可以找到自己的城市替换api 尾部的代码 http://t.weather.itboy.net/api/weather/city/101280701

#获取天气
def getTemp():
    try:              # 连接超时,6秒,下载文件超时,7秒
        r = requests.get('http://t.weather.itboy.net/api/weather/city/101280701',timeout=(6,7)) 
        r.encoding = 'utf-8'
        tempList = [
        (r.json()['cityInfo']['city']),             #城市
        (r.json()['data']['forecast'][0]['low']),   #今日低温
        (r.json()['data']['forecast'][0]['high']),  #今日高温
        (r.json()['data']['forecast'][0]['type']),  #今日天气

        (r.json()['data']['forecast'][1]['low']),   #明日低温
        (r.json()['data']['forecast'][1]['high']),  #明日高温
        (r.json()['data']['forecast'][1]['type']),  #明日天气

        (r.json()['data']['forecast'][2]['low']),   #后日低温
        (r.json()['data']['forecast'][2]['high']),  #后日高温
        (r.json()['data']['forecast'][2]['type']),  #后日天气

        (r.json()['data']['forecast'][3]['low']),   #大后日低温
        (r.json()['data']['forecast'][3]['high']),  #大后日高温
        (r.json()['data']['forecast'][3]['type']),  #大后日天气

        (r.json()['cityInfo']['updateTime'])        #更新时间
        ]
    except:
        tempList = ["---"]*14
        return tempList
    else:
        return tempList

由于在PC 调试get_cpu_temp() 和get_gpu_temp() 两个函数不能再pc 下使用先注释掉了,再树莓派中跑的时候记得把代码还原

# cpuTemp = get_cpu_temp()

# gpuTemp = get_gpu_temp()

cpuTemp = 23

gpuTemp = 23

工程下载

ShaderFallback/Raspberry-Pi-PyQt​github.com
8c8180ef1c0f99702421294bbba46035.png

字体文件来自 (字体有版权商用前请自理!)

三极纤云简体正版字体下载 正版字体版权购买 - 正版中文字体版权购买及下载尽在字体家​www.zitijia.com
aedc3538477c1b462676731e3699f443.png

3d333113c222417c83f70185bed3911f.png

53b013f255be6deb9a8a19791091fe03.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值