令人困惑的Python E

2024-05-11 06:43:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python制作一个基本设备,遇到了以下问题:

  File "/home/pi/Adafruit_Python_SSD1306/PyOS_V0.py", line 178, in <module>
gameMenuApp()
File "/home/pi/Adafruit_Python_SSD1306/PyOS_V0.py", line 92, in gameMenuApp
draw.text((0, 32), gameMenuText, font=StartupFinishFont,
UnboundLocalError: local variable 'gameMenuText' referenced before assignment

这没有意义,因为我在文件的开头指定了变量。我还将代码放到python linter中,但没有收到错误。另外,我删除了大部分代码,以使其更易于阅读,所以如果有什么不合理的,不要担心它。我也在Github上发布了代码。https://github.com/raspiuser6969/PyOS

gameMenuText = " "
gameMenuSelect = int(1)
gameMenu = ['   Pong    ','    RPS    ']
gameMenuSelect = int(1)
def pong():
def rps():
def gameMenuApp():
   while GPIO.input(A_pin):
        draw.rectangle((0,0,128,64), outline=0, fill=0)
        draw.text((0,32), gameMenuText, font=StartupFinishFont, fill=255)
        disp.image(image)
        disp.display()
        if not(GPIO.input(D_pin)):
            gameMenuSelect = gameMenuSelect + 1
            draw.rectangle((0,0,128,64), outline=0, fill=0)
            disp.image(image)
            disp.display()
            print(gameMenuSelect)
        if not(GPIO.input(U_pin)):
            gameMenuSelect = gameMenuSelect - 1
            draw.rectangle((0,0,128,64), outline=0, fill=0)
            disp.image(image)
            disp.display()
            print(gameMenuSelect)
        if gameMenuSelect == 1:
            gameMenuText = gameMenu[gameMenuSelect - 1]
            shutdownApp()
            time.sleep(0.1)
        if gameMenuSelect == 2:
            gameMenuText = gameMenu[gameMenuSelect - 1]
            rps()
            time.sleep(0.1)
        if 2 < gameMenuSelect:
            gameMenuSelect = gameMenuSelect - 1
        if 1 > gameMenuSelect:
            gameMenuSelect = gameMenuSelect + 1

Tags: 代码imageinputgpioifdefpinfill
1条回答
网友
1楼 · 发布于 2024-05-11 06:43:15

gameMenuText是在文件中定义的,但不是在函数中定义的。您应该将其作为参数传递:

def gameMenuApp(gameMenuText, gameMenuSelect, gameMenu, gameMenuSelect):

或将其用作全局:

def gameMenuApp():
    global gameMenuText, gameMenuSelect, gameMenu, gameMenuSelect

你的其他全局变量也一样,所以我已经添加了它们。你知道吗

相关问题 更多 >