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

wxPython Discussion :

PyNoAppError: The wx.App object must be created first!


Sujet :

wxPython

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Points : 44
    Points
    44
    Par défaut PyNoAppError: The wx.App object must be created first!
    Bonjour,
    j'ai recopié l'exemple ci-dessous du chap11 de wxPython in action. Lorsque je le leance depuis Pythonwin, tout va bien. Tout s'affiche sans problème. Je ferme alors la fenêtre. A partir de là, si je relance le programme, il me marque systématiquement :
    PyNoAppError: The wx.App object must be created first!

    Pourquoi je ne peux pas le relancer une deuxième fois après l'avoir fermé ?

    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
    from os import chdir
    chdir("C:/Fk/Programmation/Python")
    import wx
    from random import *
     
    class BlockWindow(wx.Panel):
        def __init__(self, parent, ID=-1, label="",
                     pos=wx.DefaultPosition, size=(100, 25)):
            wx.Panel.__init__(self, parent, ID, pos, size,
                              wx.RAISED_BORDER, label)
            self.label = label
            self.SetBackgroundColour("white")
            self.SetMinSize(size)
            self.Bind(wx.EVT_PAINT, self.OnPaint)
     
        def OnPaint(self, evt):
            sz = self.GetClientSize()
            dc = wx.PaintDC(self)
            w,h = dc.GetTextExtent(self.label)
            dc.SetFont(self.GetFont())
            dc.DrawText(self.label, (sz.width-w)/2, (sz.height-h)/2)
     
    labels = "one two three four five six seven eight nine".split()
     
    class TestFrame(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None, -1, "GridBagSizer Test")
            sizer = wx.GridBagSizer(hgap=5, vgap=5)
            for col in range(3):
                for row in range(3):
                    bw = BlockWindow(self, label=labels[row*3 + col])
                    sizer.Add(bw, pos=(row,col))
     
            # add a window that spans several rows
            bw = BlockWindow(self, label="span 3 rows")
            sizer.Add(bw, pos=(0,3), span=(3,1), flag=wx.EXPAND)
     
            # add a window that spans all columns
            bw = BlockWindow(self, label="span all columns")
            sizer.Add(bw, pos=(3,0), span=(1,4), flag=wx.EXPAND)
            # make the last row and col be stretchable
            sizer.AddGrowableCol(3)
            sizer.AddGrowableRow(3)
            self.SetSizer(sizer)
            self.Fit()    
    app = wx.PySimpleApp()
    TestFrame().Show()
    app.MainLoop()
    François

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Points : 44
    Points
    44
    Par défaut wxPython & ActivePython-2.5.2.2-win32-x86.msi
    En fait après vérification, cela me le fait avec tous les programmes que j'ai chargé en exemple du livre wxPython in action. Ainsi, si je charge par exemple le prog du radar et je le lance tout va bien. Je le ferme, puis j'essaye de le relancer et paf le même message ! J'utilise pourtant wxPython2.8-win32-unicode-2.8.9.1-py25.exe qui devrait être compatible avec la version 2.5 ?

    François

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 92
    Points : 109
    Points
    109
    Par défaut
    Bonjour ,

    J'ai copié ton code et je l'ai lancé avec IDLE - j'ai juste neutralisé les deux premières lignes puisque ton dossier n'existe pas chez moi.

    Ca marche très bien. J'ai rebooté , relancé le programme, ça marche toujours. Aussi bien sous GNU/Linux (Mandriva 2008.1) que sous Win XP - python 2.5 et wxpython 2.8 dans les deux cas.

    Essaye d'ouvrir et de lancer dans IDLE ?

    Question bête : les deux premières lignes ("from os import chdir", "chdir("C:/Fk/Programmation/Python")") servent à quoi ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Points : 44
    Points
    44
    Par défaut
    hello,

    c'était pour la suite de mon programme les 2 premières lignes (il allait chercher une image d'accueil dans mon directory et mélangeait les mains du jeu du tarot aléatoirement). Mais même en les virant, cela ne change toujours pas mon problème. Je vais essayer avec IDLE pour voir. J'ai exactement comme message d'erreur :

    File "C:\Python25\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
    exec codeObject in __main__.__dict__
    File "C:\Fk\Programmation\Python\wx ZeTAROT0002.py", line 48, in <module>
    TestFrame().Show()
    File "C:\Fk\Programmation\Python\wx ZeTAROT0002.py", line 24, in __init__
    wx.Frame.__init__(self, None, -1, "GridBagSizer Test")
    File "C:\Python25\lib\site-packages\wx-2.8-msw-unicode\wx\_windows.py", line 505, in __init__
    _windows_.Frame_swiginit(self,_windows_.new_Frame(*args, **kwargs))
    PyNoAppError: The wx.App object must be created first!

    François

  5. #5
    Membre averti
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Points : 342
    Points
    342
    Par défaut
    Bonjour,

    Quand on lance ce programme, y compris sous linux, ça marche bien.

    Je pense que le problème est lié à pythonwin.

    Essaie de travailler avec un python cross-platform plutôt que d'utiliser une customisation propriétaire qui n'a pas le moindre intérêt.
    Je ne traite pas les problèmes techniques par MP...
    Les forums sont là pour ça...

    Les contributions du bipede

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Points : 44
    Points
    44
    Par défaut wxpython pythonwin
    Merci Shadok et Alain,

    je vais essayer çà car sinon impossible de faire quelque chose avec wxPython qui me tente bien.

    François

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/05/2013, 20h22
  2. Widgets must be created in the GUI thread
    Par gassi64 dans le forum Qt
    Réponses: 8
    Dernier message: 29/06/2009, 14h46
  3. [XSLT] [Fatal Error] sommaire_T6.xsl:15:2: The content of elements must consist of well-form
    Par lasdou15 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 13/03/2008, 09h02
  4. Réponses: 3
    Dernier message: 04/07/2006, 17h07

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