[Python] Problème de script wxPython
Résolu
coeus
Messages postés
3021
Date d'inscription
Statut
Membre
Dernière intervention
-
coeus Messages postés 3021 Date d'inscription Statut Membre Dernière intervention -
coeus Messages postés 3021 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je commence tout juste à apprendre le Python. Après avoir lu un peu sur les choses de bases (manipulations de strings, de nombres, etc.) je me suis lancé dans les modules externes, et mon premier objectif est de comprendre le wxPython.
Alors voilà : je suis les instructions sur cette page pour commencer avec des exemples à l'appui. Mais arrivé au Improving the layout - Using Sizers, j'essaie de copier-coller le script, mais quand je l'essaie, il ne fonctionne pas. Ça me sort une erreur, exemple :
File "diceroller.pyw", line 22, in __init__
self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)
AttributeError: 'ExamplePanel' object has no attribute 'OnClick'
J'en comprends évidemment que le script le reconnaît pas l'événement OnClick, mais comment cela se peut-il, venant d'un script qui est sensé fonctionner à peu près dans l'absolu ?
Voici le code complet de mon fichier.
J'ai mis en commentaire les instructions qui posaient problème. Comme c'est là, le programme va s'ouvrir, mais ne fera rien.
Merci à quiconque pourra m'orienter !!!
Je commence tout juste à apprendre le Python. Après avoir lu un peu sur les choses de bases (manipulations de strings, de nombres, etc.) je me suis lancé dans les modules externes, et mon premier objectif est de comprendre le wxPython.
Alors voilà : je suis les instructions sur cette page pour commencer avec des exemples à l'appui. Mais arrivé au Improving the layout - Using Sizers, j'essaie de copier-coller le script, mais quand je l'essaie, il ne fonctionne pas. Ça me sort une erreur, exemple :
File "diceroller.pyw", line 22, in __init__
self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)
AttributeError: 'ExamplePanel' object has no attribute 'OnClick'
J'en comprends évidemment que le script le reconnaît pas l'événement OnClick, mais comment cela se peut-il, venant d'un script qui est sensé fonctionner à peu près dans l'absolu ?
Voici le code complet de mon fichier.
import sys import os import wx class ExamplePanel(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent) # create some sizers mainSizer = wx.BoxSizer(wx.VERTICAL) grid = wx.GridBagSizer(hgap=5, vgap=5) hSizer = wx.BoxSizer(wx.HORIZONTAL) self.quote = wx.StaticText(self, label="Your quote: ") grid.Add(self.quote, pos=(0,0)) # A multiline TextCtrl - This is here to show how the events work in this program, don't pay too much attention to it self.logger = wx.TextCtrl(self, size=(300,200), style=wx.TE_MULTILINE | wx.TE_READONLY) # A button self.button =wx.Button(self, label="Save") #self.Bind(wx.EVT_BUTTON, self.OnClick, self.button) # the edit control - one line version. self.lblname = wx.StaticText(self, label="Your name :") grid.Add(self.lblname, pos=(1,0)) self.editname = wx.TextCtrl(self, value="Enter here your name", size=(140,-1)) grid.Add(self.editname, pos=(1,1)) #self.Bind(wx.EVT_TEXT, self.EvtText, self.editname) #self.Bind(wx.EVT_CHAR, self.EvtChar, self.editname) # the combobox Control self.sampleList = ['friends', 'advertising', 'web search', 'Yellow Pages'] self.lblhear = wx.StaticText(self, label="How did you hear from us ?") grid.Add(self.lblhear, pos=(3,0)) self.edithear = wx.ComboBox(self, size=(95, -1), choices=self.sampleList, style=wx.CB_DROPDOWN) grid.Add(self.edithear, pos=(3,1)) #self.Bind(wx.EVT_COMBOBOX, self.EvtComboBox, self.edithear) #self.Bind(wx.EVT_TEXT, self.EvtText,self.edithear) # add a spacer to the sizer grid.Add((10, 40), pos=(2,0)) # Checkbox self.insure = wx.CheckBox(self, label="Do you want Insured Shipment ?") grid.Add(self.insure, pos=(4,0), span=(1,2), flag=wx.BOTTOM, border=5) #self.Bind(wx.EVT_CHECKBOX, self.EvtCheckBox, self.insure) # Radio Boxes radioList = ['blue', 'red', 'yellow', 'orange', 'green', 'purple', 'navy blue', 'black', 'gray'] rb = wx.RadioBox(self, label="What color would you like ?", pos=(20, 210), choices=radioList, majorDimension=3, style=wx.RA_SPECIFY_COLS) grid.Add(rb, pos=(5,0), span=(1,2)) #self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb) hSizer.Add(grid, 0, wx.ALL, 5) hSizer.Add(self.logger) mainSizer.Add(hSizer, 0, wx.ALL, 5) mainSizer.Add(self.button, 0, wx.CENTER) self.SetSizerAndFit(mainSizer) app = wx.App(False) frame = wx.Frame(None) panel = ExamplePanel(frame) frame.Show() app.MainLoop()
J'ai mis en commentaire les instructions qui posaient problème. Comme c'est là, le programme va s'ouvrir, mais ne fera rien.
Merci à quiconque pourra m'orienter !!!
A voir également:
- [Python] Problème de script wxPython
- Script vidéo youtube - Guide
- Citizen code python avis - Accueil - Outils
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
1 réponse
J'ai trouvé la solution.
Toutes les lignes qui ne fonctionnaient pas devaient appeler des fonctions (self.EvtText, self.EvtChar, etc.) qui étaient absentes de mon code. J'avais assumé que, par exemple, self.EvtText était une fonction built-in de wxPython qui n'avait pas besoin d'être définie.
J'ai trouvé les fonctions nécessaires dans l'exercice précédent du tutoriel où j'ai pris le reste de mon code.
Donc merci à tous ceux qui ont répondu ! :-P
Bonne journée !
Toutes les lignes qui ne fonctionnaient pas devaient appeler des fonctions (self.EvtText, self.EvtChar, etc.) qui étaient absentes de mon code. J'avais assumé que, par exemple, self.EvtText était une fonction built-in de wxPython qui n'avait pas besoin d'être définie.
J'ai trouvé les fonctions nécessaires dans l'exercice précédent du tutoriel où j'ai pris le reste de mon code.
Donc merci à tous ceux qui ont répondu ! :-P
Bonne journée !