如何调用回调然后返回 Python 中的 while 循环
How to invoke callback then go back to while loop in Python
我希望有人可以帮助我解决以下问题。我有一个 raspberry pi,带有外部按钮,在 linux 上带有 GPIZero。我希望这样当我按下按钮时,python 打印一次“按钮被按下”,并且在我释放按钮之前不会打印任何其他内容。释放按钮后,我希望 python 每三秒打印一次“循环”。当我按下按钮时,我总是希望预先完成最新的 loop()
功能。
所以基本上,在启动时,python 应该一遍又一遍地打印“循环”,直到我按下按钮。当我按下按钮时,loop()
过程应该在 python 打印“按钮被按下”之前完成。然后只要我按住按钮,就不会打印任何其他内容。当我释放按钮时,它应该回到循环“循环”。
现在我下面的东西不起作用,但它非常接近完成我想要的。问题是这段代码,我相信:
if button.is_pressed:
if timer ==1:
button.when_pressed = press
当我按下带有计时器=1 的按钮时,我必须再次按下按钮(非常非常快),以便它 运行 按下我所描述的 press() 函数。我想按住按钮一次,使 press()
功能变为 运行。我知道它的设置是如何不稳定的。我相信 button.when_pressed
没有注册按钮在到达代码中的那个点时已经被按下。我必须再次快速按下按钮才能运行代码。我觉得当它不嵌套在另一个 button.is_pressed
部分时它会更喜欢它。但是,我不知道该怎么办。我觉得我两者都需要。我想保留 button.when_pressed
回调,因为它只像我想要的那样打印一次“按钮被按下”并保持它直到我释放按钮,但我无法使用 If -statements 让它自己工作。同时,在按住按钮的同时仅使用 button.is_pressed
会使 python 循环打印“按钮已按下”打印,这是我不想要的。
如有任何帮助,我们将不胜感激。
#!/usr/bin/python3
from gpiozero import Button
from time import sleep
import time
button = Button(4)
timer = 0
def press():
print("Button is pressed")
def loop():
global timer
timer = 0
print('loop')
sleep(3)
timer = 1
#button.when_released = release
while True:
if button.is_pressed:
if timer ==1:
button.when_pressed = press
sleep(4)
button.when_pressed = None
else:
loop()
def MainLoop():
is_pressed = False
while True:
if not is_pressed and button.is_pressed:
is_pressed = True
do_something()
else if is_pressed and not button.is_pressed:
is_pressed = False
只是保持状态...
我希望有人可以帮助我解决以下问题。我有一个 raspberry pi,带有外部按钮,在 linux 上带有 GPIZero。我希望这样当我按下按钮时,python 打印一次“按钮被按下”,并且在我释放按钮之前不会打印任何其他内容。释放按钮后,我希望 python 每三秒打印一次“循环”。当我按下按钮时,我总是希望预先完成最新的 loop()
功能。
所以基本上,在启动时,python 应该一遍又一遍地打印“循环”,直到我按下按钮。当我按下按钮时,loop()
过程应该在 python 打印“按钮被按下”之前完成。然后只要我按住按钮,就不会打印任何其他内容。当我释放按钮时,它应该回到循环“循环”。
现在我下面的东西不起作用,但它非常接近完成我想要的。问题是这段代码,我相信:
if button.is_pressed:
if timer ==1:
button.when_pressed = press
当我按下带有计时器=1 的按钮时,我必须再次按下按钮(非常非常快),以便它 运行 按下我所描述的 press() 函数。我想按住按钮一次,使 press()
功能变为 运行。我知道它的设置是如何不稳定的。我相信 button.when_pressed
没有注册按钮在到达代码中的那个点时已经被按下。我必须再次快速按下按钮才能运行代码。我觉得当它不嵌套在另一个 button.is_pressed
部分时它会更喜欢它。但是,我不知道该怎么办。我觉得我两者都需要。我想保留 button.when_pressed
回调,因为它只像我想要的那样打印一次“按钮被按下”并保持它直到我释放按钮,但我无法使用 If -statements 让它自己工作。同时,在按住按钮的同时仅使用 button.is_pressed
会使 python 循环打印“按钮已按下”打印,这是我不想要的。
如有任何帮助,我们将不胜感激。
#!/usr/bin/python3
from gpiozero import Button
from time import sleep
import time
button = Button(4)
timer = 0
def press():
print("Button is pressed")
def loop():
global timer
timer = 0
print('loop')
sleep(3)
timer = 1
#button.when_released = release
while True:
if button.is_pressed:
if timer ==1:
button.when_pressed = press
sleep(4)
button.when_pressed = None
else:
loop()
def MainLoop():
is_pressed = False
while True:
if not is_pressed and button.is_pressed:
is_pressed = True
do_something()
else if is_pressed and not button.is_pressed:
is_pressed = False
只是保持状态...