Bonjour,

J'aimerais pouvoir griser un bouton pendant l'ouverture d'une nouvelle fenêtre.
Je m'explique :
j'ai une frame principale dans un fichier.
Lorsque je clique sur un bouton, je crée une nouvelle frame en l'important d'un autre fichier.
J'aimerais que ce bouton devienne grisé (du genre btn.disable() ) pendant tout le temps ou cette frame reste ouverte, de façon à ne pouvoir ouvrir qu'une seule fois cette frame !

Je joins ci-dessous un extrait des 2 fichiers pour bien me faire comprendre :

fichier "main.py":
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
#!/usr/bin/env python
#-*- coding: iso-8859-15 -*-
 
import wx
 
class Appli(wx.App):
    def OnInit(self):
        # création de la fenêtre principale
        frame = Principale("Application") 
        frame.Show(True)
        self.SetTopWindow(frame)
        return True
 
class Principale(wx.Frame):
    def __init__(self, titre):
        wx.Frame.__init__(self, None, -1, title='main')
        panel =  wx.Panel(self, -1)
        self.gbs = wx.GridBagSizer(hgap=5, vgap=5)
        self.btn1 = wx.Button(panel, -1, "bouton")
        self.Bind(wx.EVT_BUTTON, self.onFonction, self.btn1)
        self.gbs.Add(self.btn1, (0,0))
        panel.SetSizerAndFit(self.gbs)
        self.SetClientSize(panel.GetSize())
 
    def onFonction(self,evt):
        import module1
        self.dlg = module1.algo(self)
        self.dlg.Show(True)
 
if __name__ == "__main__":
    app = Appli()
    app.MainLoop()
fichier "module1.py":
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
import wx
 
class algo(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, title = "algo")
        panel =  wx.Panel(self, -1)
        self.gbs = wx.GridBagSizer(hgap=5, vgap=5)
 
        self.liste1 = ['Choix 1', 'Choix 2']
        self.Choix = wx.RadioBox(panel, -1, "Choix", 
                                      (-1,-1), wx.DefaultSize, self.liste1, 1, 
                                      style = wx.RA_SPECIFY_COLS)
        self.Bind(wx.EVT_RADIOBOX, self.onChoix, self.Choix)
 
        self.btnQuit = wx.Button(panel, -1, "Quitter")
        self.Bind(wx.EVT_BUTTON, self.onQuitter, self.btnQuit)
 
        self.gbs.Add(self.Choix, (0,0))
        self.gbs.Add(self.btnQuit, (0,1))
 
        panel.SetSizerAndFit(self.gbs)
        self.SetClientSize(panel.GetSize())
 
    def onChoix(self, evt):
        pass
 
    def onQuitter(self, evt):
        self.Destroy()
dans l'attente....