第一个项目,Python 3 在 pi 上,一开始似乎无法 运行

First project, Python 3 on a pi, can't seem to get it running right at start

我需要做一个简单的东西,这似乎是一个很好的学习入门项目 python。我遵循了这个 GPIO 音乐盒教程 (https://projects.raspberrypi.org/en/projects/gpio-music-box),它 运行 在 MU,Tho​​nny Python IDE 中很好,但是当我 运行 在 Geany 上时它会在终端中打开,运行 结束,按下按钮时不发出声音。我需要的是让此脚本在 raspbian 启动后自动启动并在启动时播放声音。我已经尝试编辑 rc.local、bashrc 和 crontab 以进行自动启动。

所以这是在 pi3 上 运行ning,脚本基本上是这样的:

import pygame from 

gpiozero import Button

pygame.init()

drum = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_tom_mid_hard.wav") 

cymbal = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cymbal_hard.wav") 

snare = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_snare_hard.wav") 

bell = pygame.mixer.Sound("/home/pi/gpio-music-box/samples/drum_cowbell.wav")

btn_drum = Button(4)

btn_drum.when_pressed = drum.play

这是否不起作用,因为当脚本在终端中 运行 时,它不会导入此 python 库?我唯一的其他编程经验是在 Crestron 设备上进行简单的 C# 项目。

谢谢

您所做的只是加载声音。为了播放声音,您需要输入例如

drum.play()

为了让鼓声响起。

终端中的程序运行将在执行完所有代码后终止。如果你想要一个被动坐下并监听用户输入的程序,你需要添加一个循环来保持程序 运行ning。基本结构如下所示(取自https://realpython.com/pygame-a-primer/#setting-up-the-game-loop

# Variable to keep the main loop running
running = True

# Main loop
while running:

    # Look at every event in the queue
    for event in pygame.event.get():
        # Did the user hit a key?
        if event.type == KEYDOWN:
            # Was it the Escape key? If so, stop the loop.
            if event.key == K_ESCAPE:
                running = False

        # Did the user click the window close button? If so, stop the loop.
        elif event.type == QUIT:
            running = False

如果你对这个结构不熟悉的话,思路是只要变量运行ning = True,程序就会在每次执行到末尾的时候一直回到while行。当您确实想要结束程序时,例如允许用户按退出键退出,您可以添加一个事件侦听器,如图所示,将 运行ning 变量更改为 false。

如果我对你的问题的理解正确,请将所有初始化和导入放在脚本的开头,然后将所有事件侦听器放在循环中。我强烈建议您也通读 pygame 文档。