基于树莓派的python界面开发实例教程

2023-11-10

基于树莓派的python界面开发实例教程

环境测试

点击树莓派的开始菜单,找到programming-Python3(IDLE),点击打开。
在这里插入图片描述
打开后如下:
在这里插入图片描述
在home/pi下面建立home/pi/py3prog的文件夹,专门用来存放python脚本,利用IDLE来新建一个home/pi/py3prog/digitalClock.py文件,用来存放让实例文件。

用IDLE打开刚刚新建的文件,填入以下带代码:

from tkinter import *

root = Tk()
root.titlle('this is my digital clock')
root.geometry('300x100')
app = Application(root)
app.mainloop()

保存,运行,应当出现以下界面:
在这里插入图片描述

作者还拥有个人公众号,会写一些感悟文章,知圈,二维码如下,欢迎扫描关注,关注后有作者微信,欢迎添加交流:
知圈二维码

添加label实例

特别注意的是__init__的下划线是由两段‘_’组成的,如果拼写为一个下划线,虽然不报错,但是运行后控件无效,不显示。

from tkinter import *

class Application(Frame):
	"""Build the basic window frame template"""

	def __init__(self, master):
		super(Application, self).__init__(master)
		self.grid()
		self.create_widgets()

	def create_widgets(self):
		self.lable1 = Label(self, text='Welcome to my window!')
		self.lable1.grid(row=0, column=0, sticky= W)

root =Tk()
root.title('Test Application window with label1')
root.geometry('300x100')
app=Application(root)
app.mainloop()

运行后结果如下:
在这里插入图片描述

时钟程序

from tkinter import *
import time
import threading


class Application(Frame):
        """Build the basic window frame template"""

        def __init__(self, master):
                super(Application, self).__init__(master)
                self.grid()
                self.create_widgets()

        def create_widgets(self):
                t = time.localtime()
                current_time = time.strftime('%H:%M:%S',t)
                self.lable1 = Label(self, text=current_time)
                self.lable1.grid(row=0, column=0, sticky= NSEW)
                self.lable1.config(font=('Arial',370))
                self.lable1.config(bg='black',fg='white')
                self.lable1.after(1000,self.Refresher)
                
        def Refresher(self):
                t = time.localtime()
                current_time = time.strftime('%H:%M:%S',t)
                self.lable1.configure(text=current_time)
                self.lable1.after(1000,self.Refresher)
                
root =Tk()
root.title('Test Application window with label1')
width= root.winfo_screenwidth()
height= root.winfo_screenheight()
root.geometry("%dx%d" % (width, height))
root.config(bg='black')
app=Application(root)      
app.mainloop()

运行后如下:

在这里插入图片描述

添加天气

时钟写完以后,觉得有点空洞,决定加入天气情况的信息。经初步调研,选择用‘openweathermap’的API,官网见此
此提供商有集成好的python包,注册一个账号可免费获取(目前免费版三小时更新一次)。需要导入“pyowm”包。

官网有示例文档

代码如下(特别备注:pyowm.OWM括号里面的是API Key,去官网注册一个账户,会自动生成一个,代码里的是示例,我已更改过,不可用,请替换成自己的):

from tkinter import *
import time
import threading
import pyowm
import json


class Application(Frame):
        """Build the basic window frame template"""

        def __init__(self, master):
                super(Application, self).__init__(master)
                self.grid()
                self.create_widgets()

        def create_widgets(self):
                t = time.localtime()
                current_time = time.strftime('%H:%M:%S',t)
                self.lable1 = Label(self, text=current_time)
                self.lable1.grid(row=0, column=0, sticky= NSEW)
                self.lable1.config(font=('Arial',370))
                self.lable1.config(bg='black',fg='white')
                self.lable1.after(1000,self.Refresher)
                owm = pyowm.OWM('02f7e0006144dc293dcd49ec8c4750dd')
                mgr = owm.weather_manager()
                weather = mgr.weather_at_place('Shanghai,CN').weather
#                sf = owm.weather_at_place('London,uk')
                temp_dict_celsius = weather.temperature('celsius')
                wetherInfo = json.dumps(temp_dict_celsius)
                self.labelweatherlocal = Label(self,text = current_time + wetherInfo)
                self.labelweatherlocal.grid(row=1, column=0, sticky= NSEW)
                self.labelweatherlocal.config(font=('Arial',34))
                self.labelweatherlocal.config(bg='black',fg='white')
                self.labelweatherlocal.after(600000,self.weatherRefresher)
               
        def Refresher(self):
                t = time.localtime()
                current_time = time.strftime('%H:%M:%S',t)
                self.lable1.configure(text=current_time)
                self.lable1.after(1000,self.Refresher)

        def weatherRefresher(self):
                t = time.localtime()
                current_time = time.strftime('%H:%M:%S',t)
                owm = pyowm.OWM('02f7e0006144dc293dcd49ec8c4750dd')
                mgr = owm.weather_manager()
                weather = mgr.weather_at_place('Shanghai,CN').weather
#                sf = owm.weather_at_place('London,uk')
                temp_dict_celsius = weather.temperature('celsius')
                wetherInfo = json.dumps(temp_dict_celsius)
                self.labelweatherlocal.configure(text = current_time + wetherInfo)
                self.labelweatherlocal.after(600000,self.weatherRefresher)
                

                
root =Tk()
root.title('Test Application window with label1')
width= root.winfo_screenwidth()
height= root.winfo_screenheight()
root.geometry("%dx%d" % (width, height))
root.config(bg='black')
app=Application(root)      
app.mainloop()

运行结果如下:
在这里插入图片描述
下面返回的是时间(用以显示更新时间,目前十分钟更新一次),后面会写一个好看的窗口把数据搞得好看些。目前返回信息依次是当前温度、最高温度、最低温度、体感温度。作者在上海,所以参数传进去的是上海。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于树莓派的python界面开发实例教程 的相关文章

  • Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • 使用 OpenCV 和/或 Numpy 对两个图像进行 Alpha 混合 [重复]

    这个问题在这里已经有答案了 我想将一个填充纯色的半透明矩形添加到已加载的半透明 PNG 中 这是我正在使用的输入图像示例 该图像加载了标准cv2 IMREAD UNCHANGED标志 以便完美保留 alpha 通道 该输入图像存储在imag
  • 使用应用程序脚本将 MS Word 文件(保存在云端硬盘中)转换为 Google 文档

    我被某些事情困住了 找不到解决办法 有没有办法使用文件 url 或 id 将存储在 Google Drive 中的 MS Word 文件转换为 Google 文档 我目前有一个电子表格 其中包含文件的网址 或者 也可以使用 python 脚
  • ca 证书 Mac OS X

    我需要在emacs 上安装offlineimap 和mu4e 问题是配置 当我运行 Offlineimap 时 我得到 OfflineIMAP 6 5 5 Licensed under the GNU GPL v2 v2 or any la
  • Pandas 连接问题:列重叠但未指定后缀

    我有以下数据框 print df a mukey DI PI 0 100000 35 14 1 1000005 44 14 2 1000006 44 14 3 1000007 43 13 4 1000008 43 13 print df b
  • 组和平均 NumPy 矩阵

    假设我有一个任意的 numpy 矩阵 如下所示 arr 6 0 12 0 1 0 7 0 9 0 1 0 8 0 7 0 1 0 4 0 3 0 2 0 6 0 1 0 2 0 2 0 5 0 2 0 9 0 4 0 3 0 2 0 1 0
  • 无法使用 BeautifulSoup 和 Requests 抓取下拉菜单

    我想抓取百年灵网站上的产品页面以获取各种信息 示例页面 https www breitling com gb en watches navitimer b01 chronograph 46 AB0127211C1A1 https www b
  • 如何在Python代码中查找列号

    简短问题 当按上述方式调用函数时 我可以找到行号here https stackoverflow com questions 3056048 filename and line number of python script 同样 如何找到
  • NumPy 和 SciPy - .todense() 和 .toarray() 之间的区别

    我想知道使用是否有什么区别 优点 缺点 toarray vs todense 在稀疏 NumPy 数组上 例如 import scipy as sp import numpy as np sparse m sp sparse bsr mat
  • 张量流和线程

    下面是来自 Tensorflow 网站的简单 mnist 教程 即单层 softmax 我尝试通过多线程训练步骤对其进行扩展 from tensorflow examples tutorials mnist import input dat
  • scikit-learn 和tensorflow 有什么区别?可以一起使用它们吗?

    对于这个问题我无法得到满意的答案 据我了解 TensorFlow是一个数值计算库 经常用于深度学习应用 而Scikit learn是一个通用机器学习框架 但它们之间的确切区别是什么 TensorFlow 的目的和功能是什么 我可以一起使用它
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • 如何使用 Celery 多工作人员启用自动缩放?

    命令celery worker A proj autoscale 10 1 loglevel info启动具有自动缩放功能的工作人员 当创建多个工人时 me mypc projects x celery multi start mywork
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 根据列索引重命名 Dataframe 列

    是否有内置函数可以按索引重命名 pandas 数据框 我以为我知道列标题的名称 但事实证明第二列中有一些十六进制字符 根据我接收数据的方式 我将来可能会在第 2 列中遇到这个问题 因此我无法将这些特定的十六进制字符硬编码到 datafram
  • Django Rest Framework POST 更新(如果存在或创建)

    我是 DRF 的新手 我阅读了 API 文档 也许这是显而易见的 但我找不到一个方便的方法来做到这一点 我有一个Answer与 a 具有一对一关系的对象Question 在前端 我曾经使用 POST 方法来创建发送到的答案api answe
  • 更换壳牌管道[重复]

    这个问题在这里已经有答案了 在 subprocess 模块的 Python 2 7 文档中 我找到了以下片段 p1 Popen dmesg stdout PIPE p2 Popen grep hda stdin p1 stdout stdo
  • 在 scipy 中创建新的发行版

    我试图根据我拥有的一些数据创建一个分布 然后从该分布中随机抽取 这是我所拥有的 from scipy import stats import numpy def getDistribution data kernel stats gauss
  • 如何从 nltk 下载器中删除数据/模型?

    我在 python3 NLTK 中安装了一些 NLTK 包 通过nltk download 尝试过它们 但不需要它们 现在想删除它们 我怎样才能删除例如包large grammars来自我的 NLTK 安装 我不想删除完整的 NLTK 安装
  • 使用 SERVER_NAME 时出现 Flask 404

    在我的 Flask 配置中 我将 SERVER NAME 设置为 app example com 之类的域 我这样做是因为我需要使用url for with external网址 如果未设置 SERVER NAME Flask 会认为服务器

随机推荐

  • TOF/结构光camera区别、TOF同时成像深度图、IR图原理?

    TOF 结构光camera区别 参考 https zhuanlan zhihu com p 51218791 TOF是通过红外光发射器发射调制后的红外光脉冲 不停地打在物体表面 经反射后被接收器接收 通过相位的变化来计算时间差 进而结合光速
  • 【Qt】串口通讯

    Qt串口通信基础及名词说明 1 串口通信 1 波特率 2 数据位 3 停止位 4 奇偶校验位 2 名词介绍简单版 1 起始位 2 数据位 3 校验位 4 停止位 5 空闲位 2 Qt串口通信模块QtSerialPort简介 1 QSeria
  • Jmeter--记录一个使用CSV Data Set Config犯的低级错误

    关于Jmeter的这个元件CSV Data Set Config网上已有大量篇幅的文章去接受 并且介绍的都挺详细 这里就不再介绍 这里主要介绍第一次使用此元件时犯的错误 当脚本完成后 点击运行 但是在察看结果树中没有发现运行结果 可以说点击
  • SpringBoot 如何保证接口安全?老鸟们都是这么玩的!

    为什么要保证接口安全 对于互联网来说 只要你系统的接口暴露在外网 就避免不了接口安全问题 如果你的接口在外网裸奔 只要让黑客知道接口的地址和参数就可以调用 那简直就是灾难 举个例子 你的网站用户注册的时候 需要填写手机号 发送手机验证码 如
  • 23年找工作的心酸历程

    前几天在脉脉上看到一个热议话题 23年找工作的心酸历程 大家都知道近几年互联网大环境不好 找工作变得越来越卷了 就算是BAT这种大厂出来的 也不见得就有多好找工作 可想而知 如果你的背景和能力不是特别强 很有可能练简历关都过不了 特别是工作
  • SpringBoot 快速整合SpringDataJPA (基础篇)

    序言 SpringDataJPA秉承大道至简的设计理念 给我们的数据层开发带来的极大的便利 诸如基于注解就可完成实体 数据库的映射关系 提供自带的通用Repo接口 接口方法约定名称即可实现数据访问等特性都是值得称赞的功能 正文 Spring
  • Flutter踩坑之 Android license status unknown 解决方案

    问题引入 Mac上搭建Flutter开发环境文章中 在使用flutter doctor查看是否需要安装其它依赖项时 检测出三个问题 Doctor found issues in 3 categories 其中有关Android平台的报错如下
  • C++ sort()函数

    C 中的sort 函数是用于对容器 如数组 向量 链表等 中的元素进行排序的标准库函数 它使用了一种称为快速排序 quicksort 的排序算法 通常具有较好的性能 sort 函数位于
  • element 表格二次封装

  • Mac office 2016 word 出现隐藏模块中出现编译错误: link

    try to remove Library Group Containers UBF8T346G9 Office User Content Startup Word linkCreation dotm or whatever in that
  • Redis单机版全面讲解

    目录 常识 什么是redis redis为什么快 redis作为实例安装在系统中 redis数据类型 redis命令 String类型相关命令 list类型相关命令 hash类型相关命令 set类型相关命令 zset类型相关命令 redis
  • LAN8720A网络模块的使用问题

    一 LAN8720A模块驱动电路 最近在调试STM32F4驱动LAN8720A网络模块 在做方案前参考是正点原子的LAN8720A的驱动电路方案 但是从网上买回来的LAN8720A模块用正点原子的例程一直驱动不起来 在windows系统下一
  • vue提示插件[vscode]

    在VSCode Marketplace 搜素Vue 出现关于语法高亮的插件有 vue vue beautify vue color VueHelper vertur等等 比较了下载数量可以了解到 vetur 是目前比较好的语法高亮插件 我们
  • Eclipse使用(Java基础)&Spring boot学习(一)

    Eclipse安装 这个很简单 搜索一下Eclipse下载即可 我是在这里下的 然后选个开发环境 C 的话我会在Visual Studio下写 所以只装了Java 一路next就好 没有什么坑 Hello World Create a Ja
  • HADOOP介绍

    1 HADOOP背景介绍 1 1 什么是HADOOP HADOOP是apache旗下的一套开源软件平台 HADOOP提供的功能 利用服务器集群 根据用户的自定义业务逻辑 对海量数据进行分布式处理 HADOOP的核心组件有 HDFS 分布式文
  • 嵌入式操作系统风云录:历史演进与物联网未来.

    嵌入式操作系统风云录 历史演进与物联网未来 何小庆 著 图书在版编目 CIP 数据 嵌入式操作系统风云录 历史演进与物联网未来 何小庆著 北京 机械工业出版社 2016 10 ISBN 978 7 111 55085 3 嵌 何 实时操作系
  • Java项目结构概述

    文章目录 前言 一 项目结构介绍 1 单模块项目结构 2 多模块项目结构 3 分层结构 4 MVC项目结构 5 插件化结构项目 6 微服务架构结构 总结 前言 构建一个良好的Java项目结构是开发高质量 可扩展和易维护应用程序的重要基础 在
  • skimage图像的读取与保存

    首先 说明用opencv与skimage io imread读取和保存图片的区别 读取和保存后的都是numpy格式 但cv2的读取和存储格式是BGR 而skimage的读取和存储格式是RGB 1 读取图片 skimage读取图片 img s
  • The deduced formulas of Conv1d and ConvTranspose1d

    torch nn Conv1d in channels out channels kernel size stride 1 padding 0 dilation 1 groups 1 bias True In the simplest ca
  • 基于树莓派的python界面开发实例教程

    基于树莓派的python界面开发实例教程 环境测试 添加label实例 时钟程序 添加天气 环境测试 点击树莓派的开始菜单 找到programming Python3 IDLE 点击打开 打开后如下 在home pi下面建立home pi