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

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 方法需要由一个参数接收选择的当前刻度