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 :

[wxPython] wxNoteBook : supprimer une page


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Par défaut [wxPython] wxNoteBook : supprimer une page
    bonjour,

    j'ai créé un wxNoteBook comportant plsuieurs page et dans un menu l'utilisateur peut supprimer la page courante

    pb: la seule info que l'on peut récupérer de la page courante et ce qu'elle contient (methode GetCurrentPage) et la page obtenue ne permet pas de la supprimer car pour supprimer une apge on doit avoir son index et je ne trouve pas de méthode permettant de récupérer l'index de la page courante

    comment faire ?

  2. #2
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Citation Envoyé par frizou11
    bonjour,

    j'ai créé un wxNoteBook comportant plsuieurs page et dans un menu l'utilisateur peut supprimer la page courante

    pb: la seule info que l'on peut récupérer de la page courante et ce qu'elle contient (methode GetCurrentPage) et la page obtenue ne permet pas de la supprimer car pour supprimer une apge on doit avoir son index et je ne trouve pas de méthode permettant de récupérer l'index de la page courante

    comment faire ?
    Salut frizou11,

    1) dans l'init de ton notebook, il faut binder l'evenement "page changée":
    self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnPageChanged)

    2) créer la methode correspondante qui recupere la page courante:
    def OnPageChanged(self, event):
    self.old = event.GetOldSelection()
    self.new = event.GetSelection()
    self.sel = self.GetSelection()

    3) dans ton menu, pour effacer la page courante :
    notebook.DeletePage(notebook.sel)

    ca marche ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Par défaut
    ca a l'air d'etre la solution mais le problème c'est qu'en ajoutant ce bind ds l'init de mon notebook ca m'affiche une page blanche !
    il faut savoir que dans l'init je ne fais que créer le notebook, j'ajoute une page qdl'utilisateur le souhaite plus tard via le menu

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Par défaut
    et si j'ajoute le bind apres la fonction d'ajout de page ben a chaque fois que j'ouvre une page ca ouvre la meme que la premiere !
    apparemment le bind bloque le bon déroulement de l'ouverture des pages...
    quelqu'un a une solution ?

  5. #5
    Membre expérimenté
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Par défaut
    Tu trouveras ci-dessous un exemple parfaitement opérationnel.
    A noter que tu dois libérer l'évènement de changement de page avec la méthode skip() après l'avoir traité, pour lui permettre de terminer son affichage.
    C'est sûrement ça qui te gênait dans ton programme.

    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
    #! /usr/bin/env python
    #-*- coding: iso-8859-15 -*-
     
    import wx
     
    class PanneauDeCouleur(wx.Panel):
    	def __init__(self, parent, couleur):
    		wx.Panel.__init__(self, parent, -1)
    		self.SetBackgroundColour(couleur)
     
    class MonBook(wx.Notebook):
    	def __init__(self, parent):
    		wx.Notebook.__init__(self, parent, -1)
    		page = PanneauDeCouleur(self, wx.RED)
    		self.AddPage(page, "Rouge")
    		page = PanneauDeCouleur(self, wx.BLUE)
    		self.AddPage(page, "Bleu")
    		page = PanneauDeCouleur(self, wx.GREEN)
    		self.AddPage(page, "Vert")
    		self.actuel = self.GetSelection()
     
    		self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.OnChange)
     
    	def PageEnCours(self):
    		return self.actuel
     
    	def OnChange(self, evt):
    		self.actuel = evt.GetSelection()
    		evt.Skip()
     
    class MaFenetre(wx.Frame):
    	def __init__(self):
    		wx.Frame.__init__(self, None, -1, title = u"test notebook", size = (800, 600))
    		menuBar = wx.MenuBar()
    		menu = wx.Menu()
    		menu.Append(wx.ID_CLOSE, u"Détruire la page en cours")
    		menu.Append(wx.ID_EXIT, u"Quitter")
    		menuBar.Append(menu, u"Action")
    		self.SetMenuBar(menuBar)
    		self.book = MonBook(self)
     
    		self.Bind(wx.EVT_MENU, self.OnDetruit, id = wx.ID_CLOSE)
    		self.Bind(wx.EVT_MENU, self.OnQuit, id = wx.ID_EXIT)
     
    	def OnDetruit(self, evt):
    		self.book.DeletePage(self.book.PageEnCours())
     
    	def OnQuit(self, evt):
    		self.Destroy()
     
    class MonApp(wx.App):
    	def OnInit(self):
    		f = MaFenetre()
    		f.Show(True)
    		self.SetTopWindow(f)
    		return True
     
    app = MonApp()
    app.MainLoop()

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Par défaut
    Par - fait !
    C'est exactement la solution à mon problème, je ne connaissais pas cette méthode pour les évènements !

    Un grand merci à toi Alain_72 !

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

Discussions similaires

  1. [FPDF] Supprimer une page d'un document PDF
    Par Chikh001 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 23/03/2008, 20h22
  2. Supprimer une page d'un Multipage
    Par Vin_SuFu_R@T dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/01/2008, 10h32
  3. Réponses: 40
    Dernier message: 02/12/2007, 16h24
  4. Comment supprimer une page d'un PrintDocument ?
    Par Sikary dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/04/2007, 14h54
  5. Supprimer une page dans un TPageControl
    Par PHIL45 dans le forum Delphi
    Réponses: 2
    Dernier message: 20/01/2007, 06h02

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