IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Canvas.pack() -> "Python a cessé de fonctionner" [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut Canvas.pack() -> "Python a cessé de fonctionner"
    Salut,

    J'ai décidé de passer enfin à Python 3. Je mets à jour un programme avec interface tkinter. J'ai de la chance il n'y a presque rien a changer. Cependant j'ai un soucis avec un canvas matplotlib. Lorsque j'exécute le programme j'ai droit à un bon vieux plantage:
    Python a cessé de fonctionner
    J'ai eu un peu de mal a repérer la ligne qui pêche (pas terrible ce jeux de mots) car aucun traceback n'est renvoyé.

    Voici un bout de code permettant de reproduire le problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    # Gui modules
    import tkinter as tk
    import tkinter.ttk
    import tkinter.messagebox
     
    # Plotting modules
    import matplotlib
    matplotlib.use('TkAgg')
    import matplotlib.pyplot as plt
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
     
     
    class MainApplication(tk.Frame):
        """Main frame of the user interface. Parent is root."""
     
        def __init__(self, master, *args, **kwargs):
     
            tk.Frame.__init__(self, master, *args, **kwargs)
            self.master = master
            self.initialize()
     
        def initialize(self):
     
            # Frame to hold content
            frame = tk.Frame(self, name='polar')
            frame.pack(fill=tk.BOTH, expand=tk.Y, padx=2, pady=3)
     
            # Set up a figure in a canvas
            self.figure = plt.figure(1)
            self.canvas = FigureCanvasTkAgg(self.figure, master=frame)
            self.canvas.get_tk_widget().config(height=40, width=200)
            self.canvas.get_tk_widget().pack(fill='both', expand=1, padx=2, pady=2)
            #self.canvas.draw()
     
     
    def stop_gui():
        """Function called to cleanly stop the interface"""
        if tkinter.messagebox.askokcancel('Quit', 'Do you want to quit?'):
            root.quit()
            root.destroy()
     
     
    if __name__ == '__main__':
     
        root = tk.Tk()
        root.resizable(0,0)
        root.configure(background='black')
        root.title('App')
        MainApplication(root).pack()
        root.protocol("WM_DELETE_WINDOW", stop_gui)
        root.mainloop()
    Le problème intervient à la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.canvas.get_tk_widget().pack(fill='both', expand=1, padx=2, pady=2)
    Si commentée, tout ce passe bien. Je précise aussi qu'auparavant (python 2.7) ça fonctionnait nickel. Ah oui, et j'utilise tk 8.5.18 et matplotlib 1.5.1 dans les deux cas. J'ai essayé avec .grid() au lieu de pack(), même soucis.

    Rien trouvé sur google. Une idée?

    J

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 277
    Points : 36 762
    Points
    36 762
    Par défaut
    Salut,

    Citation Envoyé par Julien N Voir le message
    J'ai décidé de passer enfin à Python 3. Je mets à jour un programme avec interface tkinter. J'ai de la chance il n'y a presque rien a changer. Cependant j'ai un soucis avec un canvas matplotlib. Lorsque j'exécute le programme j'ai droit à un bon vieux plantage
    J'ai testé votre programme avec Python 3.4 qui vient avec Tk 8.6 et il n'y a pas de problème particulier: çà affiche la fenêtre et çà demande la confirmation de la sortie lorsqu'on clique sur la croix demandant la fermeture de la fenêtre.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Intéressant. J'utilise Python 3.5 via Anaconda (64bits). Ils n'ont pas tk 8.6 dans leur dépôt. Je vais tenter de passer par pip pour mettre à jour tk. C'est le genre de choses qui foirent assez souvent...

  4. #4
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Pas de souci chez moi non plus sous spyder 2.3.8 avec Python 3.5.2 64bits (linux).
    Pas d'aide par mp.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Ah m**de. J'ai un peu galéré pour passer de tk 8.5 à 8.6. Mais ça ne change rien, mon code crash toujours. La fenêtre principale s'ouvre, le canvas est bien affiché, mais l'appli crash tout de même. Le soucis vient peut-être de matplotlib. Vous avez quelle version par curiosité?

    J

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Success.

    Le problème provient bien de matplotlib. Je suis passé sur une version supérieur (1.5.2) via pip (après avoir enlever la version venant avec anaconda, la 1.5.1). Désormais cela fonctionne bien. y'a une référence récente à ce problème : https://github.com/ContinuumIO/anaco...ues/issues/979

    Je vais pouvoir bosser maintenant.

    Ciao

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Python cesse de fonctionner
    Par coco1825 dans le forum Général Python
    Réponses: 12
    Dernier message: 05/06/2014, 16h52
  2. Canvas pour interpreter du python
    Par vikki dans le forum wxWidgets
    Réponses: 4
    Dernier message: 04/08/2008, 17h12
  3. ''explorateur exe a cessé de fonctionner ''
    Par bibiou dans le forum Windows Vista
    Réponses: 6
    Dernier message: 05/07/2008, 15h16
  4. Python et HTML: pb de quotes
    Par Gorgo13 dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 18/10/2007, 14h06
  5. explorateur windows a cessé de fonctionner
    Par jeanmorel dans le forum Windows Vista
    Réponses: 3
    Dernier message: 09/07/2007, 21h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo