wxpython e il veto agli eventi
Von: Emanuele Gesuato (emanuele.gesuato@gmailvia.com) [Profil]
Datum: 13.06.2008 18:06
Message-ID: <48529b01$0$41656$4fafbaef@reader4.news.tin.it>
Newsgroup: it.comp.lang.python
Datum: 13.06.2008 18:06
Message-ID: <48529b01$0$41656$4fafbaef@reader4.news.tin.it>
Newsgroup: it.comp.lang.python
Ciao,
Ho un semplice wx.Frame composto da un wx.Notebook che a sua volta ha
diversi tab. Devo bloccare l'accesso ad alcuni di questi tab tramite
password. Poi quando l'utente preme ALT+F4 o clicca sulla "X" voglio
mostrare un messaggio di avvertimento per chiedere conferma prima di
uscire.
Attualmente il codice è il seguente:
Questo primo metodo è associato all'onchanging del wx.notebook:
def OnPageChanging(self, event):
old = event.GetOldSelection()
new = event.GetSelection()
if old == self.pagina_crea_ordini:
password_inserita
guiutil.show_dialog_with_input('Inserire password', 'Inserire password',
True)
if password_inserita != 'c':
event.Veto()
else:
event.Skip()
else:
event.Skip()
Poi al momento della chiusura del frame viene chiamato questo metodo:
def OnClose(self, event):
dial = wx.MessageDialog(None, 'Sei sicuro di uscire ?', 'Domanda',
wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
ret = dial.ShowModal()
if ret == wx.ID_YES:
self.Destroy()
else:
event.Veto()
che è associato al frame principale con
self.Bind(wx.EVT_CLOSE, self.OnClose)
Grosso modo questa implementazione funziona ma ci sono alcuni problemi.
1. Quando clicco su un tab diverso dalla "pagina_crea_ordini" mi viene
fuori la password e se è sbagliata resto nel tab in cui ero. Però se
riclicco ulteriormente *sullo stesso tab* di prima non mi vien più fuori
la maschera di richiesta password. Cliccando su un altro tab non ho
alcun problema, la maschera compare correttamente.
2. Quando chiudo il frame viene scatenato anche l'onpagechanging e mi
viene richiesta la password.
C'è un modo per risolvere questi problemi ?
Ciao e grazie,
Emanuele
[ Auf dieses Posting antworten ]Antworten
- Y3s (15.06.2008 15:08)
