<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Droid Sans'; font-size:9pt; font-weight:400; font-style:normal;">
<p style=" margin-top:6px; margin-bottom:6px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0; background-color:#ffffff;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000; background-color:#ffffff;">HOW-TO Programmare in Python - Parte 5</span><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br />Scritto da Greg Walters<br /><br />Se siete come me, ODIERETE la prima parte di questa lezione. ODIO quando l'autore mi dice di leggere due volte ogni parola nel suo libro/capitolo/articolo, perché SO già che sarà una noia - anche quando so che è per il mio bene, e finirò col farlo comunque.<br /><br />Consideratevi avvertiti. PER FAVORE leggete i successivi noiosi paragrafi con attenzione. Presto arriveremo alla parte divertente, ma abbiamo bisogno di preparare il terreno prima di iniziare a programmare.<br /><br />INNANZITUTTO dovete installare Boa Constructor e wxPython. Usate Synaptic e selezionate sia wxPython che Boa Constructor. Una volta installati, dovreste trovare Boa in Applicazioni\Programmazione\Boa Contructor. Procedete ed avviatelo. Questo renderà le cose più semplici. Una volta avviato il programma, vedrete tre distinte finestre: una in alto e due in basso. Potrebbe essere necessario ridimensionarle e spostarle un pò, fino a sistemarle in questa maniera:<br /><br />La finestra superiore è quella strumenti. Quella in basso a sinistra è l'ispezionatore, e quella in basso a destra è l'editor. Nella finestra strumenti, troverete varie linguette (Nuovo, Contenitore/Posizionamento, etc) che vi permetteranno di iniziare un nuovo progetto, aggiungere frame ad un progetto esistente, e aggiungere vari controlli all'applicazione. La finestra ispezionatore acquisterà importanza quando inizieremo ad aggiungere controlli. La finestra editor ci consente di modificare il nostro codice, salvare i progetti, e molto altro. Ritorniamo a quella strumenti, ed osserviamo ciascuna linguetta - partendo da quella "Nuovo". Anche se qui ci sono molte opzioni, ne tratteremo solo due. Sono il 5° e il 6° pulsante da sinistra: wx.App e wx.Frame. wx.App ci permette di creare un'applicazione completa partendo da due file auto-generati. Uno per il frame ed un altro per l'applicazione. Questo è il metodo che preferisco usare. wx.Frame è usato per aggiungere altri frame alla nostra applicazione e/o creare una applicazione standalone da un singolo file sorgente. Ne parleremo più tardi.<br /><br />Osserviamo ora la linguetta Contenitore/Posizionamento. Ci sono parecchie cose. Quelle che userete maggiormente sono wx.panel (prima da sinistra) e i ridimensionatori (2,3,4,5 e 6 da destra). Sotto Controlli base, troverete etichette, box di testo, caselle, pulsanti radio, e altri. Sotto Bottoni, troverete vari tipi di pulsanti. Controlli lista comprende griglie per dati ed altre liste. In Utilità troveremo timer e oggetti per menu.<br /><br />Ecco alcune cose da ricordare quando siamo pronti per la prima applicazione. Ci sono alcuni bug nelle versione Linux. Uno riguarda l'impossibilità di muovere ALCUNI controlli nel designer. Usate la combinazione <Ctrl>+Tasti Freccia per muoverli o aggiustarne la posizione. Un altro riguarda i tutorial allegati a Boa Constructor - posizionando un pannello è difficile seguirli. Osservate i piccoli riquadri (ve li spiegherò presto). Potete anche usare la linguetta Objs dell'Ispezionatore e in questo modo selezionarlo.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Ok, continuiamo. Nella linguetta 'Nuovo' della finestra strumenti, selezioniamo wx.App (5° bottone da sinistra). Verranno così create due nuove linguette nell'editor: una chiamata “*(App1)*”, l'altra “*(Frame1)*”. Che ci crediate o meno, la PRIMA cosa da fare è salvare i nostri due file, partendo da Frame1. Il pulsante per salvare è il 5° da sinistra nell'Editor. Si aprirà la finestra "Salva come" chiedendoci dove salvare e come chiamare il file. Create nella vostra home una cartella chiamata GuiTest, e salvate il file come “Frame1.py”. Osservate che la linguetta “*(Frame1)*” ora mostra “Frame1”. (I caratteri “*(“ ci informano che il file deve essere salvato.) Ora fate lo stesso con la linguetta App1.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Ora esaminiamo alcuni dei pulsanti della barra degli strumenti di Editor. Quelli per ora interessanti sono Salva (5° da sinistra) ed Esegui (freccia gialla, 7° da sinistra). Se vi trovate in una linguetta frame (Frame1 per esempio) ci saranno pulsanti extra che avrete bisogno di conoscere. Partiamo dal pulsante Designer:</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">È importante. Permette di disegnare la finestra della nostra GUI - che è quello che faremo. Quando ci cliccherete vi sarà mostrata una finestra vuota.</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Si tratta di una tela bianca in cui inserire i controlli necessari (secondo logica). La prima cosa che vogliamo fare è posizionare un wx.panel. Quasi tutto quello che ho letto dice di non mettere controlli (ad eccezione di wx.panel) direttamente su un frame. Quindi, cliccate sulla linguetta Contenitore/Posizionamento nella finestra Strumenti, quindi sul bottone wx.Panel. Quindi, passare al frame sul quale si sta lavorando e cliccare in un punto qualunque all'interno del frame. Saprete che ha funzionato se vedete qualcosa simile a questo:<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Ricordate quando vi ho avvisato dei bug? Bene, questo è un altro. Non preoccupatevi. Vedete gli 8 piccoli quadratini neri? Sono i limiti del pannello. Se volete potete cliccare e trascinarne uno per ridimensionare il pannello, ma per il nostro progetto vogliamo che copra l'intero frame. A questo punto ridimensionate un poco solo il FRAME. Ora abbiamo un pannello su cui inserire altri controlli. Muovere il frame su cui si sta lavorando fino a che la barra strumenti dell'Editor non sia visibile. Sono comparsi due nuovi pulsanti: un "check" e una "X". La "X" annulla i cambiamenti apportati.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Il pulsante Check:<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">è chiamato pulsante "Invia". Serve per scrivere i cambiamenti sul file frame. Abbiamo ancora bisogno di salvarlo, ma questo includerà le novità nel file. Quindi, cliccate il pulsante Invia. C'è un altro Invia nell'Ispezionatore, ma ce ne occuperemo dopo. Ora salvate il vostro file.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Ritornate alla modalità Designer. Cliccare sulla linguetta Bottoni della finestra Strumenti e quindi cliccate il primo pulsante a sinistra, wx.Button. Quindi aggiungetelo al centro del frame. Avrete qualcosa di simile a questo:</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br />Notate come vi siano intorno 8 piccoli quadrati neri come per il pannello. Sono maniglie per ridimensionare. Mostrano inoltre quale controllo è selezionato. Per posizionarlo con cura al centro del frame, tenete premuto il tasto Ctrl e usate i tasti freccia per muoverlo dove si vuole. Ora osservate l'Ispezionatore. Ci sono quattro linguette. Cliccare su 'Constr'. Da qui possiamo cambiare etichetta, nome, posizione, dimensione e stile. Per ora cambiamo il nome in 'btnShowDialog' e la proprietà Label in 'Cliccami'.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Ora, trascuriamo il resto della linguetta e passiamo a quella Objs. Questa mostra tutti i controlli usati e la loro relazione genitore/figlio. Come potete vedere, il pulsante è figlio di panel1, che è figlio di Frame1.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Premete Invia e salvate i cambiamenti. Ritornate ancora una volta al designer, e notate che (assumendo che sia ancora selezionata la linguetta Objs), Frame1 è ora selezionato. Questo va bene perché è quello che ci serve. Ritornare alla linguetta 'Constr', e cambiare il titolo da 'Frame1' a 'La nostra prima GUI'. Cliccate Invia e salavate ancora una volta. Ora eseguiamo la nostra applicazione. Cliccate il pulsante giallo Esegui nell'Editor.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Cliccate quanto volete sul pulsante, ma non accadrà nulla. Perché? Bene, non abbiamo detto al pulsante cosa fare. Per questo, dobbiamo impostare un evento che deve verificarsi quando l'utente clicca il nostro bottone. Cliccare sulla X nell'angolo in alto a sinistra per interrompere l'esecuzione del frame. Poi, ripassare al designer, selezionate il pulsante e andate nella linguetta 'Evts' dell'Ispezionatore. Cliccate su ButtonEvent e quindi doppio click su wx.EVT_BUTTON, e notate che nella finestra sotto otteniamo un pulsante evento chiamato 'OnBtnShowDialogButton'. Clic su Invia e salvate.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Prima di andare oltre, guardiamo cosa abbiamo ottenuto sotto forma di codice (pagina 11).</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;">#Boa:Frame:Frame1</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;">import wx</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;">def create(parent):</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> return Frame1(parent)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;">[wxID_FRAME1, wxID_FRAME1BTNSHOWDIALOG, wxID_FRAME1PANEL1,] = [wx.NewId() for _init_ctrls in range(3)]</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;">class Frame1(wx.Frame):</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> def _init_ctrls(self, prnt):</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> # generated method, don't edit</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> pos=wx.Point(543, 330), size=wx.Size(458, 253),</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> style=wx.DEFAULT_FRAME_STYLE, title=u'La nostra prima GUI')</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> self.SetClientSize(wx.Size(458, 253))</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> pos=wx.Point(0, 0), size=wx.Size(458, 253),</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> style=wx.TAB_TRAVERSAL)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> self.btnShowDialog = wx.Button(id=wxID_FRAME1BTNSHOWDIALOG,</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> label=u'Cliccami', name=u'btnShowDialog', parent=self.panel1,</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> pos=wx.Point(185, 99), size=wx.Size(85, 32), style=0)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> self.btnShowDialog.Bind(wx.EVT_BUTTON, self.OnBtnShowDialogButton,</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> id=wxID_FRAME1BTNSHOWDIALOG)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;">def __init__(self, parent):</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> self._init_ctrls(parent)</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;">def OnBtnShowDialogButton(self, event):</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:"'Courier New'"; font-size:10pt; color:#000000;"> event.Skip()</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">La prima riga è un commento che dice a Boa Constructor che si tratta di un file boa. È ignorato dal compilatore Python, ma non da Boa. La riga successiva importa wxPython. Ora saltiamo alla definizione della classe.</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">All'inizio, c'è il metodo __init_ctrls. Notate il commento proprio sotto la definizione. Non modificate il codice di questa sezione. Se lo fate, lo rimpiangerete. Ovunque SOTTO questa routine dovrebbe essere sicuro. In questa routine, troverete le definizioni di ciascun controllo del nostro frame.</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Quindi, osservate la routine __init__. Qui potete inserire qualunque chiamata al codice di inizializzazione. Infine, la routine OnBtnShowDialogButton. Qui è dove metteremo il codice da eseguire quando l'utente clicca il pulsante. Osservate che ora qui c'è la riga event.Skip(). In parole semplici, dice di uscire dalla routine quando si richiama l'evento.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Ora, quello che andremo a fare è chiamare un finestra messaggio da far comparire con del testo. Si tratta di un'operazione comune per i programmatori per portare a conoscenza l'utente di qualcosa - un errore, o che un processo è terminato. In questo caso, chiameremo l'inclusa routine wx.MessageBox. La routine viene chiamata con due parametri. Il primo è il testo che desideriamo mostrare nel messaggio e il secondo è il titolo. Commentate la riga event.Skip() e inserite la seguente riga.<br /><br />wx.MessageBox('Hai cliccato il pulsante', 'Info')<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Salvate e cliccate il pulsante Esegui (freccia gialla). Dovreste vedere qualcosa simile a questo:</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">E quando cliccate il pulsante dovreste vedere qualcosa di simile a questo:</span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;"><br />Beninteso, questo è il modo più semplice per chiamare un messagebox. È possibile usare ulteriori parametri.<br /><br />Ecco un breve sommario su come cambiare il tipo di icona nel box messaggio (di più la prossima volta).<br /><br />wxICON_QUESTION - Mostra un'icona di domanda<br /><br />wxICON_EXCLAMATION - Mostra un'icona di avviso<br /><br />wxICON_ERROR - Mostra un'icona di errore<br /><br />wxICON_INFORMATION - Mostra un'icona di informazione<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">La maniera di usarle sarebbe<br /><br />wx.MessageBox('Hai cliccato il pulsante, 'Info', wx.ICON_INFORMATION)<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">o qualunque icona si voglia usare in base alla situazione. Ci sono altre opzioni per i pulsanti di cui parleremo la prossima volta.<br /><br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:6px; margin-right:6px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><span style=" font-family:'Verdana'; font-size:10pt; color:#000000;">Così, fino ad allora, provate qualcuno degli altri controlli, disposizioni, e così via. Buon divertimento!<br /><br />Greg Walter è il proprietario della RainyDay Solutions, LLC, una società di consulenza in Aurora, Colorado e programma dal 1972. Ama cucinare, fare escursioni, ascoltare musica e passare il tempo con la sua famiglia.<br /></span></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br /></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">-- </p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Giuseppe Calà</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">OpenPGP key: 0x749487B5</p></body></html>