Python布尔值重置自身
我有一个小的python脚本,它可以启动一部电影,我可以通过按下一个按钮来暂停电影。但我不能按同一个按钮再次播放电影。 我在树莓上运行它,所以我听GPIO pinPython布尔值重置自身,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
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
,而不切换外部状态
。如果你想切换外部的状态
,你需要通过状态
来明确地更新它。要扩展这一点,你应该对变量的范围进行更多的研究,以及如何根据你在其中使用变量的上下文对变量进行更改。状态=状态电影(状态)