Python布尔值重置自身

Python布尔值重置自身,python,raspberry-pi,boolean,Python,Raspberry Pi,Boolean,我有一个小的python脚本,它可以启动一部电影,我可以通过按下一个按钮来暂停电影。但我不能按同一个按钮再次播放电影。 我在树莓上运行它,所以我听GPIO pin import RPi.GPIO as GPIO from omxplayer.player import OMXPlayer from time import sleep GPIO.setmode(GPIO.BCM) GPIO.setwarnings(True) GPIO.setup(18, GPIO.IN, pull_up_dow

我有一个小的python脚本,它可以启动一部电影,我可以通过按下一个按钮来暂停电影。但我不能按同一个按钮再次播放电影。 我在树莓上运行它,所以我听GPIO pin

import RPi.GPIO as GPIO
from omxplayer.player import OMXPlayer
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(True)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

movie1 ='/home/pi/Downloads/big_buck_bunny_480p_surround-fix.avi'
status = None

def getButtonPress():
    while 1:
        if GPIO.input(18) == False:
            return True
            break

def statusMovie(status):
    print('Status')
    print(status)
    print('after if:')
    if status == True:
        status = not status
        print(status)
        return status
    else:
        status = not status
        print(status)
        return status

def main():
    print('begin main')
    print(status)
    try:
        player = OMXPlayer(movie1)
        while True:
            if getButtonPress() == True:
                if statusMovie(status) == True:
                    player.pause()
                    print('Stopping')
                    print(status)
                    print('end.....')
                else:
                    player.play()
                    print('restarting movie')
                    print(status)
                    print('end.....')
            sleep(2)
    except KeyboardInterrupt:
        print('Closing Player')
        GPIO.cleanup()

if __name__ == "__main__":
    if status is None:
        status = False
        main()
电影开始播放,我可以按下按钮暂停电影。 问题在于我的状态。我在开始运行脚本时将其指定为False,不确定这是否是正确的位置。然后我在
statesMovie(status)
函数中检查并更改它。 我还更改了布尔值,这样当我再次按下按钮时,它不仅可以暂停电影。。但也要再次播放这部电影。 我不知道怎么做,但是
stateMovie(status)
函数返回值,它会将主函数中的值始终更改为False

我从脚本中得到了打印输出:

  • 开始干管
  • 假的
  • 地位
  • 假的
  • 在下列情况之后:

  • 真的我只想谈谈你的问题:

    问题是您正在修改局部变量,但不会反映到外部变量


    您将
    status
    传递到
    statusMovie
    并希望将其从
    True
    切换到
    False
    或从
    False
    切换到
    True
    。但实际上,您只需切换本地
    状态
    ,而不切换外部
    状态
    。如果你想切换外部的
    状态
    ,你需要通过
    状态=状态电影(状态)

    来明确地更新它。要扩展这一点,你应该对变量的范围进行更多的研究,以及如何根据你在其中使用变量的上下文对变量进行更改。