【发布时间】:2019-05-03 23:37:42
【问题描述】:
我正在为实时汽车转向信号编写代码。
我可以让 LED 闪烁,我可以让多边形改变其填充颜色以模拟转向信号。
这适用于 LED:
def blink_arrow():
leftBlinker.blink(on_time=.7, off_time=.3, n=3)
这适用于形状填充:
def blink_arrow(count=0):
global arrow_color
global left_arrow
if arrow_color == "green":
left_arrow = c.create_polygon(50, 100, 150, 75, 150, 125, fill="gray")
elif arrow_color == "gray":
left_arrow = c.create_polygon(50, 100, 150, 75, 150, 125, fill="green")
if count <5:
w.after(300 if left_arrow=="green" else 700, blink_arrow, count+1)
这是我尝试过的,但没有奏效:
from tkinter import Canvas
from gpiozero import Button, LED
button = Button(23)
leftBlinker = LED(17)
def blink_arrow(count=0):
leftBlinker.blink(on_time=.7, off_time=.3, n=1)
global arrow_color
global left_arrow
if arrow_color == "green":
left_arrow = c.create_polygon(50, 100, 150, 75, 150, 125, fill="gray")
elif arrow_color == "gray":
left_arrow = c.create_polygon(50, 100, 150, 75, 150, 125, fill="green")
if count <5:
w.after(300 if left_arrow=="green" else 700, blink_arrow, count+1)
#Build window, canvas, shape
button.when_pressed = blink_arrow
这是根据您的建议的新代码:
def blink_arrow(count=0)
#code for function as written in my first example
pass
def blink_leftLED():
leftBlinker.blink(on_time=.7, off_time=.3, 3)
pass
def left_signal():
l1 = Thread(blink_arrow)
l2 = Thread(blink_leftLED)
l1.start()
l2.start()
left_button.when_pressed = left_signal
这是错误:
...line 28 in left_signal
l1 = Thread(blink_arrow)
...line reference to threading.py...
assert group is None, "group argument must be none for now"
请帮忙。 :)
我希望多边形和 LED 同步“闪烁”。我可以用谨慎的功能让它们单独闪烁,但不能一起闪烁。当我尝试在单个函数中调用这两个函数时,如上所述,灯会亮起,填充颜色会改变一次。
【问题讨论】:
-
是的,这是可能的,但是我们需要看看 Blinker 对象如何处理
on_time和off_time。就您的代码示例目前而言,它的范围使我们很难为您提供帮助;这是一个great resource,可以帮助您开始。祝你的代码好运! -
您向我发送了有关如何提问的说明。我遵循脚趾指南,因为我可以理解它们。我不明白你还需要什么。你能解释一下吗?我在代码示例中添加了一些东西。
-
很抱歉没有指出这一点; 'pass' 是一个占位符命令。如果您没有要执行的功能,则使用 pass 只是跳过它。要使用该代码,请将“pass”关键字替换为您的代码即可。
标签: python-3.x function tkinter gpiozero