from wxPython.wx import *

class MiaApp(wxApp):
    def OnInit(self):
        dlg = wxDialog(None, -1, "", size=(200,300))

        ID_TXT = wxNewId()
        txt1 = wxTextCtrl(dlg, ID_TXT, "Ciao",
                          wxPoint(5, 5))
        EVT_TEXT(self, ID_TXT, self.OnText)

        # Questo controllo non può essere modificato.
        txt2 = wxTextCtrl(dlg, -1, "Sola lettura",
                          wxPoint(5, 35),
                          style=wxTE_READONLY)
        # La capacità di essere modificato può anche
        # essere cambiata dopo la creazione del controllo
        # con il metodo SetEditable(editable), quindi
        # l'istruzione precedente è equivalente a:
        # txt2 = wxTextCtrl(dlg, -1, "Sola lettura",
        #                  wxPoint(5, 35))
        # txt2.SetEditable(0)

        # In questo vengono mostrati solo asterischi
        # per nascondere una password
        txt3 = wxTextCtrl(dlg, -1, "Password",
                          wxPoint(5, 65),
                          style=wxTE_PASSWORD)

        # In quest'altro vengono visualizzate più
        # righe contemporaneamente
        txt4 = wxTextCtrl(dlg, -1, "Testo di prova",
                          wxPoint(5, 95),
                          style=wxTE_MULTILINE)
        # modifica il testo, similmente si può ottenere
        # il testo con il metodo GetValue()
        txt4.SetValue("Ciao\nmondo!")

        dlg.ShowModal()
        dlg.Destroy()
        return 1

    def OnText(self, event):
        wxMessageBox("Il testo è stato cambiato.")

app = MiaApp()
app.MainLoop()