Anropa undermeny från extern fil i replit
Anropa undermeny från extern fil i replit
Jag har ett problem med att anropa min externa fil mer än en gång. Jag har skapat en huvudmeny på min main-fil och jag kan anropa min undermeny från min externa second-fil utan problem en gång. Jag har skapat en knapp i min undermeny som heter tillbaka där jag "executar" min second-file och hoppar tillbaka till min main. När jag sedan kommer tillbaka till min Huvudmeny i min main-fil så funkar allt utom att gå in i undermenyn igen. Det händer nada...Jag har själv konstaterat att det är nå vajjsing i hur jag "executar" min second file då jag provat göra en enklare second file som bara printar ut en fjantig liten textremsa och den funkar utmärkt att anropa till fan löser av en. Vore sjukt tacksam för hjälp!
Detta är min kod i main-filen :
import replit
from getkey import getkey, keys
def FirstChoise():
replit.clear()
import second
second.second
def SecondChoise():
print("\nService")
input("Press Enter to continue...")
def EndProgram():
print("\nAvsluta programmet")
input("Press Enter to continue...")
menuOptions = ["Köp bil\t\t", "Service\t\t", "Avsluta\t\t"]
menuSelected = 0
while(True):
replit.clear()
print("\x1b[?25l")
if menuSelected == 0:
print(menuOptions[0] + "<--")
print(menuOptions[1])
print(menuOptions[2])
elif menuSelected == 1:
print(menuOptions[0])
print(menuOptions[1] + "<--")
print(menuOptions[2])
elif menuSelected == 2:
print(menuOptions[0])
print(menuOptions[1])
print(menuOptions[2] + "<--")
keyPressed = getkey()
if keyPressed == keys.DOWN and menuSelected + 1 != len(menuOptions):
menuSelected += 1
elif keyPressed == keys.UP and menuSelected >= 1:
menuSelected -=1
elif keyPressed == keys.ENTER:
if menuSelected == 0:
FirstChoise()
elif menuSelected == 1:
SecondChoise()
elif menuSelected == 2:
EndProgram()
print("\x1b[?25l")
break
#Detta är min kod i second-filen
def second():
replit.clear()
import replit
from getkey import getkey, keys
def FirstChoise():
replit.clear()
print("\nDu har köpt en Volvo!")
input("Tryck enter för att fortsätta handla!")
def SecondChoise():
replit.clear()
print("\nDu har köpt en Tesla!")
input("Tryck enter för att fortsätta handla!")
def EndProgram():
replit.clear()
menuOptions = ["Volvo\t\t", "Tesla\t\t", "Tillbaka\t"]
menuSelected = 0
while(True):
replit.clear()
print("\x1b[?25l")
if menuSelected == 0:
print(menuOptions[0] + "<--")
print(menuOptions[1])
print(menuOptions[2])
elif menuSelected == 1:
print(menuOptions[0])
print(menuOptions[1] + "<--")
print(menuOptions[2])
elif menuSelected == 2:
print(menuOptions[0])
print(menuOptions[1])
print(menuOptions[2] + "<--")
keyPressed = getkey()
if keyPressed == keys.DOWN and menuSelected + 1 != len(menuOptions):
menuSelected += 1
elif keyPressed == keys.UP and menuSelected >= 1:
menuSelected -=1
elif keyPressed == keys.ENTER:
if menuSelected == 0:
FirstChoise()
print("\x1b[?25l")
elif menuSelected == 1:
SecondChoise()
print("\x1b[?25l")
elif menuSelected == 2:
EndProgram()
print("\x1b[?25l")
break
Är det detta som ska "executa" second-filen?
def FirstChoise():
replit.clear()
import second
För import är inte avsedd att användas som "kör den här rutinen", utan "hämta funktioner och definitioner härifrån". Därför finns ett lås som gör att den inte importerar samma fil två gånger, det vore överflödigt. Lägg istället koden du vill köra flera gånger i en funktion, och anropa den sen när du känner för det.
Och, när du anropar, glöm inte parenteser: second.second()
Jaha men det förklarar ju saken :) Problemet jag har då är att om jag kopierar min meny och gör en undermeny i samma fil så får jag inte till det med att definiera min undermeny och kan därmed inte anropa den. Tycker det är lättare i C# när man kan stänga in sina funktioner i måsvingar. I Python så har jag inte riktigt koll på vad som ingår i mina funktioner. Kan du ge mig ett exempel på hur jag kan lösa detta med att istället anropa en undermeny i form av en funktion från samma fil ? :)
Nej det är den jag tar mig ur mainfilen med och går till second-filen. Det är detta som tar mig ur second-filen :
elif menuSelected == 2:
EndProgram()
print("\x1b[?25l")
break
def EndProgram():
replit.clear()
Alltså hur får jag en hel sån meny att anropas?
Det löste sig :) Tack för svar!