我一直在尝试制作一个 Tkinter 应用程序,它可以作为所产生声音的反馈信号灯。例如,当图书馆里的声音越来越大时,您会看到红灯,但是当它正常时,则是绿灯,依此类推。
基本上,我已经创建了一个带有画布的 Tkinter 应用程序,并在矩形(红绿灯)中制作了 3 个圆圈,还制作了一个功能来从您的麦克风获取输入以查看声音的高低。
此代码在单独的文件中制作以获取输入声音:
def decide_colour():
def print_sound(indata, outdata, frames,tijd, status):
global colour
volume_norm = np.linalg.norm(indata)
print(volume_norm)
time.sleep(1)
#set fill colour
if volume_norm > 2 and volume_norm <4:
colour = "yellow"
elif volume_norm > 4:
colour = "red"
else:
colour = "green"
print(colour)
with sd.Stream(callback=print_sound):
sd.sleep(duration * 1000)
decide_colour()
这是应该显示它的 tkinter 应用程序:
class TrafficLights:
def __init__(self):
root = Tk()
root.title("Stoplicht")
root.configure(bg='black')
root.geometry('460x400')
# Frame voor widgets
frame = Frame(root)
frame.grid()
self.colour = StringVar()
# canvas voor lichten
self.canvas = Canvas(root, width=460, height=400, bg="black")
self.canvas.create_rectangle(190, 10, 310, 350, outline='white', fill='black')
self.canvas.grid()
self.oval_red = self.canvas.create_oval(200, 20, 300, 120, fill="white")
self.oval_yellow = self.canvas.create_oval(200, 130, 300, 230, fill="white")
self.oval_green = self.canvas.create_oval(200, 240, 300, 340, fill="white")
# kleurbepaling voor de cirkels
但它陷入了一个循环。并且通过摆脱while声明,它只会打开一次。但我希望它继续运行,我希望它改变红绿灯的颜色。我已经尝试了几天,寻找答案。但我现在真的被困住了。
哆啦的时光机
料青山看我应如是
相关分类