4 svar
195 visningar
Problem1 är nöjd med hjälpen
Problem1 5 – Fd. Medlem
Postad: 13 sep 2021 22:39

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
Skaft 2373 – F.d. Moderator
Postad: 13 sep 2021 23:00

Ä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()

Problem1 5 – Fd. Medlem
Postad: 14 sep 2021 10:47

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()
Problem1 5 – Fd. Medlem
Postad: 14 sep 2021 11:07

Alltså hur får jag en hel sån meny att anropas?

Problem1 5 – Fd. Medlem
Postad: 14 sep 2021 12:31

Det löste sig :) Tack för svar!

Svara Avbryt
Close