我正在尝试用Python编写一个程序,它将用于一个树莓派的skeball游戏。我已经有了一个脚本,用Tkinter和python编写了一个简单的9球游戏。我现在的问题是,我想添加更多的游戏,例如定时游戏或板球,而不想用鼠标来控制菜单。我最初的想法是让tkinter帧堆叠在一起,然后把我想要的游戏拉到顶部。我遇到了太多的错误,GPIO不能正常工作(可能是我的经验不足,但我决定放弃它)。现在,我尝试使用代码在按下GPIO按钮时拉出单独的python脚本
import subprocess
subprocess.call('/home/pi/Skeeball_python/Skeeball02.py'
该代码返回错误13,权限被拒绝。我给了root用户访问所有包含我代码的文件和文件夹的权限,甚至在我运行程序时以root用户的身份登录,但仍然出现相同的错误。在
我的问题是,如何让这段代码工作,以便在不返回错误的情况下加载单独的脚本,并在脚本的GPIO部分需要root用户的情况下以超级用户的身份运行访问。应该我一直在尝试加载单独的脚本,还是应该尝试其他方法?在
如果有用的话,这里是我的9球游戏代码:
import RPi.GPIO as GPIO
from tkinter import *
Screen = Tk()
Screen.geometry ('1920x1080')
GPIO.setmode (GPIO.BCM)
GPIO.setup (17, GPIO.IN)
GPIO.setup (26, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #GPIO 26 as reset
score = IntVar()
ballcount = IntVar()
score.set(0)
ballcount.set(9)
mLabel1 = Label(Screen,text = 'SCORE',fg = 'red',font=("helvatica", 100))
mLabel1.place(x='250',y='250')
mLabel2 = Label(Screen,text = 'BALLS REMAINING',fg = 'red',font=("helvatica", 40))
mLabel2.place(x='250',y='550')
mLabel3 = Label(Screen,textvariable = score,fg = 'red',font=("helvatica", 100))
mLabel3.place(x='950',y='250')
mLabel4 = Label(Screen,textvariable = ballcount,fg = 'red',font=("helvatica", 100))
mLabel4.place(x='950',y='500')
mLabel5 = Label(Screen,text = 'Press Button to Reset',fg = 'red',font=("helvatica", 40))
mLabel5.place(x='250',y='550')
mLabel5.place_forget()
def score100(self):
if not ballcount.get()==0:
score.set(score.get()+100)
ballcount.set(ballcount.get()-1)
end()
def reset(self):
score.set(0)
ballcount.set(9)
mLabel2.place(x='250',y='550')
mLabel4.place(x='950',y='500')
mLabel5.place_forget()
LEDwindup()
def end():
if ballcount.get() == 0:
mLabel2.place_forget()
mLabel4.place_forget()
mLabel5.place(x='250',y='550')
GPIO.add_event_detect(17,GPIO.RISING,callback=score100,bouncetime=500)
GPIO.add_event_detect(26,GPIO.FALLING,callback=reset,bouncetime=500)
Screen.mainloop()
GPIO.cleanup()
这是相当粗糙的,我仍然是相当缺乏经验的python,所以任何建议都将有助于其他事情。在
目前没有回答
相关问题 更多 >
编程相关推荐