鱼C论坛

 找回密码
 立即注册
查看: 4481|回复: 9

能不能记录button的点击次数

[复制链接]
发表于 2018-5-6 18:38:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想写个led灯的开关,两个按钮,一个开一个关。
现在问题是按键按下松开算一个命令,执行开灯,然后自动关。
我想做成那种开灯之后,我再按关然后灯灭,有没有大佬可以解答下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-6 19:28:02 From FishC Mobile | 显示全部楼层
设置一个flag作为判定
然后添加一个计数变量即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-6 19:52:47 | 显示全部楼层
你可以设置一个 状态标志位 来判断是否有按键按下,如果按一次关就关呗

但是你要考虑多次按下一个开关,结果是怎么样,要根据你实际情况来处理。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-7 13:04:12 | 显示全部楼层
BngThea 发表于 2018-5-6 19:28
设置一个flag作为判定
然后添加一个计数变量即可

原理我懂,我就是不知道那个计数的量怎么设定
def ledon():
    led()
    x = 1
    while(1):
      GPIO.output(7,GPIO.HIGH)
    #time.sleep(2)

    GPIO.cleanup()


def ledoff():
    led()
    GPIO.output(7,GPIO.LOW)
    led()
    GPIO.output(7,GPIO.LOW)
    GPIO.cleanup()



def kongzhi():
    master = Tk()
    master.title("CONTROL")
    width,height=420,200#窗口大小
    master.geometry('%dx%d+%d+%d'%(width,height,(master.winfo_screenwidth() - width ) / 2, (master.winfo_screenheight() - height) / 2))#居中
    a = Button(master,text = "go",bg="yellow",fg="red",command =qianjin,width=2,height=1)
    a.grid(row=1,column=6,padx=10,pady=15)
    b = Button(master,text = "back",bg="yellow",fg="red",command = houtui,width=2,height=1)
    b.grid(row=5,column=6,padx=10,pady=15)
    c = Button(master,text = "left",bg="yellow",fg="red",command = xiangyou,width=2,height=1)
    c.grid(row=3,column=4,padx=10,pady=15)
    d = Button(master,text = "righe",bg="yellow",fg="red",command = xiangzuo,width=2,height=1)
    d.grid(row=3,column=8,padx=10,pady=15)
    e = Button(master,text = "ledon",bg="yellow",fg="red",repeatdelay=0,repeatinterval=100,command = ledon,width=4,height=1)
    e.grid(row=1,column=12,padx=70,pady=15)
    f = Button(master,text = "ledoff",bg="yellow",fg="red",command = ledoff,width=4,height=1)##repeatdelay=0,repeatinterval=100,
    f.grid(row=5,column=12,padx=70,pady=15)
    mainloop()
这个是那一部分我写的程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 13:21:38 | 显示全部楼层
阴月007 发表于 2018-5-7 13:04
原理我懂,我就是不知道那个计数的量怎么设定
def ledon():
    led()

你是要每个button都计入计数还是只是相应ledoff,ledon函数的时候才计数?
设置一个类属性,再所需的相应的函数中添加计数语句即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-7 13:37:10 | 显示全部楼层
BngThea 发表于 2018-5-7 13:21
你是要每个button都计入计数还是只是相应ledoff,ledon函数的时候才计数?
设置一个类属性,再所需的相 ...

我就想的是点击ledon,然后开灯长亮,点击ledoff灭,或者就一个按钮,点一下亮再点一下灭
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 14:02:49 | 显示全部楼层
阴月007 发表于 2018-5-7 13:37
我就想的是点击ledon,然后开灯长亮,点击ledoff灭,或者就一个按钮,点一下亮再点一下灭

类设计不是很容易设计一个属性用来控制吗
就算是直接用函数方法,也可以通过传递一个参数来在外部参与计数操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 14:30:28 | 显示全部楼层
我觉得还是对面灯设置一个状态属性.按钮的时候根据状态改变灯的状态 ,这样不是更直接 么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-7 14:32:06 | 显示全部楼层
BngThea 发表于 2018-5-7 14:02
类设计不是很容易设计一个属性用来控制吗
就算是直接用函数方法,也可以通过传递一个参数来在 ...

没弄懂tkinter是如何确定调用次数,不过我算是搞了个取巧的办法,用repeatdelay=100,repeatinterval=1,做成了点击亮然后松开灭
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 14:43:54 | 显示全部楼层
阴月007 发表于 2018-5-7 14:32
没弄懂tkinter是如何确定调用次数,不过我算是搞了个取巧的办法,用repeatdelay=100,repeatinterval=1, ...

能实现功能即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-30 19:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表