如何嵌套响应函数调用外部的函数?

2024-04-29 08:38:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在想办法解决这个问题。我有一个覆盆子圆周率指数,设置有一个试验板,包括:

  • 1个RGB灯
  • 2个按钮(左侧和右侧)
  • 1个OLED屏幕

每个组件都工作,我可以运行每个组件。我想做的是编写一个脚本,允许我用左键选择“模式”(一切关闭vs灯光vs屏幕打开)

选择模式后,右键允许我在该模式内的选项之间进行选择。以下是我的代码:

def off():
    lights = [red,green,blue]
    for light in lights:
        light.off()
        
def lightSelector():
    off()
    number = 0
    while number < 5:
        if rightButton.is_pressed:
            if number == 0:
                off()
                red.on()
                sleep(1)
                number += 1
            elif number == 1:
                off()
                green.on()
                sleep(1)
                number += 1
            elif number == 2:
                off()
                blue.on()
                sleep(1)
                number += 1
            elif number == 3:
                off()
                row()
                sleep(1)
                number+= 1
            else:
                number = 0
                
def picture():
    image = Image.open('grant.jpeg')
    image_r = image.resize((width,height), Image.BICUBIC)
    image_bw = image_r.convert("1")

    for x in range(width):
            for y in range(height):
                    oled.pixel(x,y,bool(int(image_bw.getpixel((x,y)))))
    oled.show()
 
def oledOff():
    oled.fill(0)
    oled.show()

def buttons():
    x = 0
    y = 0
    while y is 0:
        print('x = ' , x)
        print('y = ' , y)
        if leftButton.is_pressed:
            if x == 0 :
                oledOff()
                off()
                sleep(0.5)
                x += 1
            elif x == 1:
                oledOff()
                off()
                lightSelector()
                sleep(0.5)
                x += 1
            elif x == 2:
                oledOff()
                off()
                picture()
                sleep(0.5)
                x += 1
            else:
                x = 0

oledOff()
off()
buttons()

其思想是buttons()函数是主要的整体函数,并将根据需要调用其他函数。我的问题是,一旦我进入y == 1lightSelector()函数,它就不再显示正在按下leftButton,并且不会切换到下一个模式,而我被困在lightSelector()函数中

我知道在基线阶段,我可以在buttons函数中拼写出lightSelector,而不是调用另一个函数,但我尽量不那么冗长。我没有任何线程或multprocessing方面的经验,并对此进行了研究,但看不出这会有什么帮助


Tags: 函数inimagenumberforifdef模式