Partage
  • Partager sur Facebook
  • Partager sur Twitter

code qui crash mais qui marche

    14 mai 2021 à 11:50:17

    Alors j'ai coder une mini interface avec deux bouton qui me permettent de lancer un bot discord quand je clic sur l'un d'entre eux, le probleme c'est que quand j'active un bouton mon bot marche parfaitement mais mon interface devient inutilisable et ne repond plus ( mais mon bot marche tres bien jusqu'a ce que je ferme l'interface, voila c'est assez genant car je ne peux lancer qu'un bot a la fois ducoup et puis meme ce n'est pas tres joli d'avoir une appli qui crash.

    Mon code:

    def start_secretaire():
    
    def start_musique():
    
    window = Tk()
    
    window.title("launcher bot discord")
    window.geometry("480x360")
    window.maxsize(1920, 1080)
    window.iconbitmap("robot.ico")
    window.config(background='#41B77F')
    
    button = Button(window, text="secretaire faustin", font=("courrier", 25), bg='white', fg='#41B77F',
                    command=start_secretaire)
    button.pack(expand=YES)
    
    button = Button(window, text="bot musique", font=("courrier", 25), bg='white', fg='#41B77F', command=start_musique)
    button.pack(expand=YES)
    
    window.mainloop()

    j'ai volontairement enlever le code pour les bots discord car je ne pense pas qu'il soit tres utile.

    merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2021 à 13:41:37

      Les fonctions qui déclenchées par un évènement (comme ici un clic sur button appelle start_secretaire) doivent se terminer le plus rapidement possible car les mises à jour de l'interface (et le fait qu'elle ne répond plus) ne pourront pas se faire. Il y a plein de solutions pour faire avec... et c'est tout l'intérêt des tuto. (pour apprendre à programmer avec tkinter).

      -
      Edité par mps 14 mai 2021 à 13:42:05

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        14 mai 2021 à 13:43:03

        Bonjour,

        C'est normal, car tkinter va créer une boucle évènementielle (infinie) qui ne te permettra plus d'accéder à ton bot à moins de l'intégrer dans cette boucle

        • Partager sur Facebook
        • Partager sur Twitter
          16 mai 2021 à 23:04:33

          Merci de vos reponses, mais ducoup est ce que vous savez comment je peux réglé ce probleme?

          • Partager sur Facebook
          • Partager sur Twitter
            17 mai 2021 à 15:50:38

            Comme l'a dit Diablo, il faut intégrer ton bot à la mainloop.

            (wtf le titre de ce topic)

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              17 mai 2021 à 16:50:32

              Tu peux utiliser un thread par exemple même si je crois que Tkinter n'aime pas trop ça.
              • Partager sur Facebook
              • Partager sur Twitter
                17 mai 2021 à 17:29:05

                FaustinQUINTANE1 a écrit:

                Merci de vos reponses, mais ducoup est ce que vous savez comment je peux réglé ce probleme?


                Ca dépend de ce que fait le code qui ne rend pas la main. On peut le déporter dans un thread ou le découper en petits bouts qui pourront d'exécuter dans le même thread que le GUI avec éventuellement des appels à update_idletasks() ou des tests périodiques via after. Et parfois la solution est un mélange de ces possibilités là.

                -
                Edité par mps 17 mai 2021 à 17:30:03

                • Partager sur Facebook
                • Partager sur Twitter
                  17 mai 2021 à 17:44:21

                  lancer le bot dans un subprocess ? (vérifie qu'il n'y en a qu'un de lancer dans la foulée aussi ou plutôt n'autoriser qu'à lancer un bot)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  code qui crash mais qui marche

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown