Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exécuter une fonction avec CTkOptionMenu

Sujet résolu
    10 janvier 2024 à 11:01:34

    Bonjour à tous,

    Dans le cadre de mes études je suis en train de réaliser un projet en python avec une interface graphique créée à l'aide de la bibliothèque customtkinter. J'ai réalisé différents traitements dans plusieurs fonctions et je souhaite maintenant afficher le résultat dans la fenêtre graphique. Pour cela j'ai la fonction de traitement suivante qui retourne le pays où un artiste est le plus écouté :

    def top_pays_artiste(artiste: str) -> str:

    # création de la liste qui stockera le résultat
    stream_pays = []
    #On parcourt la fichier mais de 200 en 200 pour étudier pays par pays
    for pays in range(1, len(liste_top200), 200):
        # variable somme qui accueillera le nombre total de stream et variable p_artiste qui stocke le pays étudié
        somme = 0
        p_artiste = liste_top200[pays][-1]
        # Deuxième boucle pour parcourir toutes les musiques d'un pays
        for stream in range(pays, pays + 199):
            # si l'artiste est dans la ligne étudiée et qu'il est le premier artiste en cas de feat
            if artiste in liste_top200[stream][2] and liste_top200[stream][2][0] == artiste[0]:
                # On ajoute le nombre de stream
                somme += int(liste_top200[stream][7])
            # Si c'est la dernière ligne du pays
            if stream == (pays + 198):
                # on ajoute à la liste un tuple contenant le pays et le nombre de stream
                stream_pays.append([p_artiste, somme])
    #On renvoie le premier élément de la liste triée par nombre de stream décroissant
    top1 = sorted(stream_pays, key=itemgetter(1), reverse=True)[0]
    return f"Le pays où {artiste} est le plus écouté est : {top1[0]}"
    

    Dans la fenêtre graphique nous avons un menu déroulant permettant de choisir un artiste et la fonction s'exécute lors du choix de l'artiste. Cependant je ne sais pas comment récupérer le résultat pour l'afficher. J'ai le code suivant :

    artiste = customtkinter.CTk() artiste.geometry("1000x780") artiste.title("Fenêtre Artiste")

    frame_2 = customtkinter.CTkFrame(master=artiste) frame_2.pack(pady=20, padx=60, fill="both", expand=True)

    optionmenu_top_pays_a = customtkinter.CTkOptionMenu(frame_2, values=liste_artiste, command=lambda artiste: print(top_pays_artiste(artiste))) title1 = customtkinter.CTkLabel(frame_2, text="Sélectionnez un artiste et obtenez le pays où il est le plus écouté :", font=customtkinter.CTkFont(size=15, weight="bold")) title1.place(x=75, y=125) optionmenu_top_pays_a.place(x=350, y=175) optionmenu_top_pays_a.set("choisissez un artiste")

    J'espère que vous pourrez m'aider, Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      10 janvier 2024 à 11:16:38

      Bonjour,

      Tu devrais afficher ton code complet avec les balise de code

      on y verrait plus clair

      Visuellement, ca doit ressembler à ça:

      #Boucle
      for k in range(10):
          print(k)



      -
      Edité par Phil_1857 10 janvier 2024 à 11:17:35

      • Partager sur Facebook
      • Partager sur Twitter
        10 janvier 2024 à 13:49:27

        LoukaSauve a écrit:

        Cependant je ne sais pas comment récupérer le résultat pour l'afficher.

        Si l'instruction print(top_pays_artiste(artiste)) affiche ce que vous souhaitez... pour l'afficher ailleurs, ce devra être fait par la fonction top_pays_artiste. Car cette fonction (de rappel) étant appelée par le GUI lorsque l'utilisateur clique sur l'option, ce qu'elle retourne sera récupéré (jeté à la poubelle) par le GUI.

        -
        Edité par mps 10 janvier 2024 à 14:13:50

        • Partager sur Facebook
        • Partager sur Twitter

        Exécuter une fonction avec CTkOptionMenu

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown