相关文章推荐
安静的消炎药  ·  fullcalendar 4.2 使用 ...·  1 年前    · 
怕老婆的红金鱼  ·  windows - Makefile ...·  1 年前    · 

键盘中断后执行代码的问题

2 人关注

我为这个20x4的LCD屏幕写了一个超级简单的东西,但每当我用crtl+c中断,而不是执行我放在那里的代码时,我就一直得到这个消息。 这里是错误。

CTraceback (most recent call last):
  File "lcd/clock.py", line 25, in <module>
    sleep(1)
KeyboardInterrupt

而这里是代码。

import drivers
from time import sleep
from datetime import datetime
from subprocess import check_output
display = drivers.Lcd()
display.lcd_backlight(0)
IP = check_output(["hostname", "-I"]).split()[0]
usrinpt = input("Text: ")
while len(usrinpt) > 20:
        print("Too Long")
        usrinpt = input("Text: ")
else:
    display.lcd_backlight(1)
    print("Writing to display")
    while True:
        display.lcd_display_string(str(datetime.now().time().strftime("%H:%M:%S")), 1)
        display.lcd_display_string(str(IP), 2)
        display.lcd_display_string(str("____________________"), 3)
        sleep(1)
        display.lcd_display_string(str(datetime.now().time().strftime("%H:%M:%S")), 1)
        display.lcd_display_string(str(IP), 2)
        display.lcd_display_string(str(usrinpt), 3)
        sleep(1)
        if KeyboardInterrupt:
    # If there is a KeyboardInterrupt (when you press ctrl+c), turn off backlights
            display.lcd_backlight(0)

请先谢谢你我认为这可能是一个真正简单的修复方法,但遗憾的是我还是一个完全的新手。

python
lcd
Marcel
Marcel
发布于 2021-03-11
2 个回答
Xiddoc
Xiddoc
发布于 2021-03-11
已采纳
0 人赞同

而不是使用 if 声明...

if KeyboardInterrupt:
    # If there is a KeyboardInterrupt (when you press ctrl+c), turn off backlights
    display.lcd_backlight(0)

使用try / except语句,用于检查错误(按CTRL+C会产生一个KeyboardInterrupt错误)。

display.lcd_backlight(1) print("Writing to display") while True: display.lcd_display_string(str(datetime.now().time().strftime("%H:%M:%S")), 1) display.lcd_display_string(str(IP), 2) display.lcd_display_string(str("____________________"), 3) sleep(1) display.lcd_display_string(str(datetime.now().time().strftime("%H:%M:%S")), 1) display.lcd_display_string(str(IP), 2) display.lcd_display_string(str(usrinpt), 3) sleep(1) except KeyboardInterrupt: # If there is a KeyboardInterrupt (when you press ctrl+c), turn off backlights display.lcd_backlight(0)
Ismail Hafeez
Ismail Hafeez
发布于 2021-03-11
0 人赞同

这个问题是因为你在 sleep(1) 运行时按下了Ctrl + C。由于你只是在睡眠后检查键盘中断,Python 没有检查异常,而是像正常一样出错。你可以用 try... except... 来解决这个问题。

while True:
        display.lcd_display_string(str(datetime.now().time().strftime("%H:%M:%S")), 1)
        display.lcd_display_string(str(IP), 2)
        display.lcd_display_string(str("____________________"), 3)
        sleep(1)
        display.lcd_display_string(str(datetime.now().time().strftime("%H:%M:%S")), 1)
        display.lcd_display_string(str(IP), 2)
        display.lcd_display_string(str(usrinpt), 3)