最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Python的输入框与进度条GUI控制LED灯亮度

Arduino 少儿编程 2533浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

Python的输入框与进度条GUI控制LED灯亮度


前期准备工作(库的安装与Arduino端的standardFirmata上传)请参考下文:

Python 版本的blink(arduino)

 

我们要做什么?

本文介绍了使用Python的GUI库tkinter来制作一个用户界面,包含一个输入框,一个按钮和一个进度条。

在输入框中输入数字并按按钮提交或者滑动进度条都可以控制Arduino上的LED灯的亮度。

电路图:

 

Python的输入框与进度条GUI控制LED灯亮度

 

UI效果图如下:

 

 

Python的输入框与进度条GUI控制LED灯亮度

 

错误提示框如下图:

 

Python的输入框与进度条GUI控制LED灯亮度

 

代码如下:

from pyfirmata import Arduino

from time import sleep

from tkinter import *

from tkinter.messagebox import showerror

#错误提示框模块

from tkinter import HORIZONTAL

#用于设置进度条的方向(水平还是垂直)

port=’COM3′

board=Arduino(port)

ledPin=board.get_pin(‘d:11:p’)

sleep(5)#给一些时间让Python和Arduino之间建立通信

def onPressed():#该函数是按钮的回调函数

    try:#进行异常检查,如果输入的不是数字触发一个异常

        lightness=float(lightEntry.get())/100

        if lightness>1.0:

            showerror(title=’错误’, message=’请输入0到100之间的整数!!’) #如果输入的数字超过100则弹出错误提示框

        else:

            ledPin.write(lightness)

    except:

        showerror(title=’错误’, message=’请输入0到100之间的整数!!’)

def onDrag(v):

#进度条不拖动的回调函数,其要有一个参数用于接收进度条当前的刻度值

    lightness = float(v) / 100

    ledPin.write(lightness)

top=Tk()

top.title(‘输入LED亮度’)

lightEntry=Entry(top,bd=5,width=25)#设置输入框边框以及输入框的宽度

lightEntry.pack()

lightEntry.focus_set()#获取鼠标焦点

startButton=Button(top,text=’开始’,command=onPressed)

startButton.pack()

lightScale =Scale(top,from_=0,to=100,orient=HORIZONTAL,showvalue=1,command=onDrag)

lightScale.pack()

top.mainloop()

 

补充说明:

 

scale 进度条属性注释:

orient =HORIZONTAL 水平还是竖直

legnth 是长度

showvalue 0:不显示,1:显示

tickinterval 标注分成几段

resolution 最小单位或者说保留到几位

command 方法需要由一个参数接收选择的当前刻度

 

您必须 登录 才能发表评论!