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 :

Problème de réinitialisation de la console Python sous Spyder et d'affichage des variables


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Février 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Problème de réinitialisation de la console Python sous Spyder et d'affichage des variables
    Bonjour à tous,

    Bon je suis novice et commence tout juste à programmer en Python donc mon problème relève peut d'être d'une bêtise grossière mais je ne trouve pas de réponse sur internet.

    Configuration :
    J'ai installé Anaconda 2.4.1 64 bits avec donc la plateforme de codage Spyder, le tout avec Python 2.7. Mon PC tourne sur Windows7 pro 64bits.

    Problématique :
    Je veux utiliser une interface avec l'utilisateur pour choisir des opérations à effectuer sur des images (code ci-après). Pour le moment il s'agit d'une interface basique avec 2 boutons, un permettant de lancer une boite de dialogue d'ouverture d'un fichier image pour faire la matrice de cooccurrence de son canal Rouge, et l'autre pour quitter la fenêtre.

    Mon souci réside dans le fait que la console Python interne à Spyder dans laquelle j'exécute mon programme ne se réinitialise plus toute seule quand je quitte ma fenêtre Tkinter, que ce soit par le bouton Quitter ou par la croix de fermeture de la fenêtre. Comme si quelque chose continuait à s'exécuter malgré la fermeture de la fenêtre. Je suis obligé de réinitialiser manuellement la console pour relancer le programme (via le triangle Start vert en haut à droite de la fenêtre).
    De plus, je n'ai accès à aucune de mes variables via l'Explorateur de variables pendant et après l'exécution de la fenêtre, ce qui est un peu problématique pour faire du débogage ensuite.


    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    # Interface de dialogue
    import Tkinter
    import tkFileDialog
     
    # Traitement images
    from skimage.feature import greycomatrix, greycoprops
    from skimage import data
     
    # Fichier Excel
    from xlwt import Workbook
     
     
    def afficheCanal(c) :
     
     
        Tkinter.Tk().withdraw() # Close the root window
        in_path = tkFileDialog.askopenfilename()
        general_path = os.path.split(os.path.abspath(in_path))
     
     
     
        im = PIL.Image.open(in_path)
        R, G, B = im.split() # R = rouge, G = vert, B = bleu
        R = np.asarray(R, dtype = np.uint8)
        G = np.asarray(G, dtype = np.uint8)
        B = np.asarray(B, dtype = np.uint8)
     
        #R = np.where(R > 25., 255., R) 
        #R = np.where(R < 5., 0., R)
     
        if c == 1 :
     
          fig = plt.figure("Cooc")
          plt.clf()  # Purge la figure
     
          ax = fig.add_subplot(2,2,1)
          ax.set_title("Image de base")
          plt.imshow(R, cmap=cm.gray, origin = "lower")
          plt.colorbar()
     
          glcm = greycomatrix(R, [1], [0], 256, symmetric=True, normed=True)
     
          ax = fig.add_subplot(2,2,2)
          ax.set_title("Matrice de cooccurrence")
          plt.imshow(glcm[:, :, 0, 0], cmap=cm.gray, origin = "lower")
          plt.colorbar()    
     
          glcm = np.where(glcm > 0., 1., glcm)
          ax = fig.add_subplot(2,2,3)
          ax.set_title("Matrice de cooccurrence > 0")
          plt.imshow(glcm[:, :, 0, 0], cmap=cm.gray, origin = "lower")
          plt.colorbar()  
     
          contrast = greycoprops(glcm, prop='contrast')
     
    # Create an PyQT4 application object.
    a = QtGui.QApplication(sys.argv)       
     
    # The QWidget widget is the base class of all user interface objects in PyQt4.
    w = QtGui.QWidget()
     
    # Set window size. 
    w.resize(320, 240)
     
    # Set window title  
    w.setWindowTitle("Hello World!") 
     
    # Add a button
    btn = QtGui.QPushButton("Matrice de coocurrence", w)
    btn.clicked.connect(lambda : afficheCanal(1))
    btn.resize(btn.sizeHint())
    btn.move(100, 80)       
     
     
    btn1 = QtGui.QPushButton("Quitter", w)
    btn1.setToolTip('Click to quit!')
    btn1.clicked.connect(exit)
    btn1.resize(btn1.sizeHint())
    btn1.move(100, 160)  
     
     
    # Show window
    w.show() 
     
    sys.exit(a.exec_())

    Quelqu'un saurait-il d'où cela vient svp ?
    Est-ce que j'utilise Tkinter de mauvaise manière ou est-ce que j'oublie de fermer quelque chose ?


    Merci d'avance,

    Thomas

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Samoht74 Voir le message
    Quelqu'un saurait-il d'où cela vient svp ?
    La console proposée par un IDE n'est qu'un outil de debug dont la construction peut avoir des effets de bords sur le comportement de l'application. Pour voir ce que fait l'application, il faut la lancer depuis la console Windows (cmd.exe).

    Citation Envoyé par Samoht74 Voir le message
    Est-ce que j'utilise Tkinter de mauvaise manière ou est-ce que j'oublie de fermer quelque chose ?
    Vous utilisez à la fois tkinter et Qt: c'est l'un ou l'autre!

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Février 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    D'accord oui je voulais aller trop vite. J'ai cherché un peu et mieux compris comment marche le débogage sur Spyder.

    Merci.

    Du coup j'ai des soucis qui ne viennent pas de Tkinter, je vais aller jeter un coup d’œil dans les autres sections.

Discussions similaires

  1. Problème d'affichage des variables char
    Par choisima dans le forum Débuter
    Réponses: 7
    Dernier message: 07/01/2013, 21h34
  2. Modifier sous TWS l'affichage des variables (En 1.9)
    Par bakounine dans le forum z/OS
    Réponses: 5
    Dernier message: 28/07/2011, 14h34
  3. Problème de login avec jbpm-console sous Tomcat
    Par zambizi dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 11/09/2007, 17h11
  4. Réponses: 13
    Dernier message: 06/09/2007, 06h50

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