Ich habe ein Spiel erstellt. Es funktionierte perfekt, also dachte ich, ich würde einen Bildschirm hinzufügen, um die Farbe der Kugel zu ändern. Ich habe das Fenster erstellt, dem ich die Variablen zugewiesen habe, die ich brauchte, aber ich erhalte immer einen Fehler, der besagt, dass die Variable nicht definiert wurde, aber die anderen Variablen unterhalb der Variable, die definiert wurde und von der gleichen "Shop" -Funktion kam definiert. und wenn ich das normale los werde und nur die FireGun und LaserGun FireGun nicht definiert ist. Es ist schwer zu erklären. schau dir also den Code an, den ich oft durchgespielt habe, und sieh zu, ob du Fehler auslesen kannst.globale Variable nicht übergeben, sagt es nicht erkannt?
from tkinter import *
def MainMenu():
self = Tk()
self.btnShops = Button(text ="Shop")
self.btnShops.pack()
def startShops(event):
self.destroy()
Shop()
self.btnShops.bind('<Button>',startShops)
self.geometry("830x700")
self.title("Space Assault")
self.configure(bg="black")
def Shop():
self = Tk()
normal = 1
fire = 0
laser = 0
def FireGun(event):
global fire
global normal
global laser
fire = 1
normal = 0
laser = 0
def LaserGun(event):
global laser
global fire
global normal
laser = 1
fire = 0
normal = 0
self.btnfireGun = Button(text="Fire Gun")
self.btnfireGun.pack()
self.btnlaser = Button(text = "Laser Gun")
self.btnlaser.pack()
self.btnMainMenu = Button(text="Main Menu")
self.btnMainMenu.pack()
#Bind
self.btnfireGun.bind('<Button>',FireGun)
self.btnlaser.bind('<Button>', LaserGun)
self.btnMainMenu.bind('<Button>',StartMainMenu)
#Frame settings
self.geometry("830x700")
self.title("Space Assault Shop")
self.configure(bg="black")
def singleplayergame():
def Shoot(event):
global normal
global fire
global laser
self.shot = Canvas(bg="black",highlightthickness=0,width=10,height=10)
self.shot.place(x=shotXpos,y=shotYpos)
if normal == 1:
self.shot.create_oval(0,0,10,10,fill=random.choice(COLORS))
elif fire == 1:
self.shot.create_oval(0,0,10,10,fill='red')
elif laser == 1:
self.shot.create_oval(0,0,10,10,fill='blue')
MainMenu()
Wenn ich auf den FireGun-Knopf geklickt habe, funktionieren die Kugeln gut und sie kommen rot wie normal heraus. Aber wenn ich es "normal" will, feuert es gar nichts. hoffe das macht Sinn. Ich denke, es hat etwas mit der globalen Verlangsamung zu tun, aber ich bin wirklich auf diesem hier festgefahren.