2010-07-05 23 views
7

Tengo una aplicación wxPython, y en esta aplicación, puedo seleccionar y copiar texto de varios marcos, pero no puedo hacerlo desde los cuadros de diálogo. ¿Hay alguna forma de hacer esto?Seleccionar y copiar texto del cuadro de diálogo en wxPython

Entiendo que probablemente podría hacer esto colocando algún tipo de TextCtrl en el cuadro de diálogo, pero me gustaría poder hacerlo desde un diálogo de apariencia estándar.

EDIT:

Lo sentimos, debería haber sido más específico. No puedo seleccionar texto de un wx.MessageBox en Windows Vista o Mac (no tengo acceso a Linux para intentar eso). Aquí hay un ejemplo de la llamada para crear el cuadro de mensaje:

wx.MessageBox(str(msg), "Could not load ballots", wx.OK|wx.ICON_ERROR) 

No puedo seleccionar el texto del cuadro de mensaje.

+1

No me queda claro a qué se refiere cuando dice "copiar texto de varios marcos", etc. Por ejemplo, cuando ejecuto la demostración (usando Linux) puedo copiar el texto publicado en un cuadro de mensaje, o en el cuadro Acerca de , que son ambos diálogos, y pegue los copiados en otro programa. ¿Qué texto estás tratando de copiar? – tom10

+2

Incluso si no puede resaltar el texto en Windows, puede presionar Ctrl-C para copiar todo el contenido del diálogo en el portapapeles. Si necesita algo más específico que eso, probablemente tendrá que crear un diálogo personalizado con la misma apariencia. wx.MessageBox es solo una llamada a la función de cuadro de mensaje nativo de la plataforma. –

Respuesta

5

Si comete un cuadro de mensaje personalizado como así, aparecerá ser texto estático hasta que haga clic en el texto:

class MessageBox(wx.Dialog): 
    def __init__(self, parent, title): 
     wx.Dialog.__init__(self, parent, title=title) 
     text = wx.TextCtrl(self, style=wx.TE_READONLY|wx.BORDER_NONE) 
     text.SetValue("Hi hi hi") 
     text.SetBackgroundColour(wx.SystemSettings.GetColour(4)) 
     self.ShowModal() 
     self.Destroy() 

sólo lo he probado esto en Windows, es posible que tenga que ajustar el color para su sistema operativo.

+0

'text.SetBackgroundColour (self.GetBackgroundColour())' es probablemente una mejor opción. – Pod

Cuestiones relacionadas