【发布时间】:2017-12-24 15:46:04
【问题描述】:
我有一个来自 tkinter 图形界面的代码,它与 arduino 通信,碰巧我得到了时间打开和关闭的时间,所以我将每个当前时间与无限循环中的输入进行比较,该无限循环仅用于当此处要求关闭 LED 的第二个输入代码条目结束时,当它进入循环时,tkinter 没有响应。
from tkinter import *
import serial
from time import strftime
conexao = serial.Serial('COM3', 9600, timeout=0.5)
cont=0
janela = Tk()
def ligar():
global cont
cont=cont+1
if cont==1:
valor=bytes(('1'),'utf-8')
conexao.write(valor)
ligar['text']='Desligar led'
elif cont==2:
valor=bytes(('2'),'utf-8')
conexao.write(valor)
ligar['text']='Ligar led'
cont=0
def agendar():
comeco= start.get()
final= limit.get()
while 1>0:
if comeco == strftime('%H:%M:%S'):
valor=bytes(('1'),'utf-8')
conexao.write(valor)
elif final == strftime('%H:%M:%S'):
valor=bytes(('2'),'utf-8')
conexao.write(valor)
break
ligar=Button(janela,command=ligar,text='ligar',width="60")
ligar.grid(row=1)
texto=Label(text='Defina o começo:').grid(row=2)
start=Entry(janela)
start.grid(row=3)
texto2=Label(text='Defina o fim:').grid(row=4)
limit=Entry(janela)
limit.grid(row=5)
salvar=Button(janela,width="30",text='Salvar Horarios',command=agendar)
salvar.grid(row=6)
【问题讨论】:
-
请发布您的输出
-
这个网站上有很多与 arduino 通信和使用 tkinter 相关的问题。在问这个问题之前你有没有做过任何研究?见How much research effort is expected of Stack Overflow users?
-
代码完美运行,但在循环中界面挂起并且没有修改其他内容,但它会按照程序要求打开 LED
-
不要使用
while循环,而是使用tkinter.after()定期执行代码 - ti 不会阻塞mainloop()并且 IDE 不会冻结。顺便说一句:下次你可以写while True:而不是while 1>0: -
那段时间怎么和后面的呢,谢谢
标签: python loops tkinter arduino