2010-07-05 14 views
7

Ich habe eine WxPython App, und in dieser App kann ich Text aus verschiedenen Frames auswählen und kopieren, aber ich kann nicht aus Dialogen. Gibt es eine Möglichkeit, dies zu tun?Wählen und kopieren Sie Text aus dem Dialogfeld in WxPython

Ich verstehe, ich könnte dies wahrscheinlich tun, indem Sie eine Art von TextCtrl in den Dialog einfügen, aber ich würde gerne in der Lage sein, dies aus einem Standard aussehenden Dialog zu tun.

EDIT:

Sorry, sollte ich präziser gewesen. Ich kann keinen Text von einer wx.MessageBox unter Windows Vista oder Mac auswählen (habe keinen Zugang zu Linux, um das zu versuchen). Hier ist ein Beispiel für den Aufruf des Meldungsfelds:

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

Ich kann den Text des Meldungsfelds nicht auswählen.

+1

Es ist mir nicht klar, was Sie meinen, wenn Sie sagen "Text aus verschiedenen Frames kopieren", usw. Zum Beispiel, wenn ich die Demo (unter Linux) ausführen kann ich den geposteten Text in eine Message Box oder About Box kopieren , die beide Dialoge sind, und fügen Sie die kopierten in ein anderes Programm ein. Welchen Text möchten Sie kopieren? – tom10

+2

Auch wenn Sie den Text unter Windows nicht markieren können, können Sie immer noch STRG-C drücken, um den gesamten Inhalt des Dialogs in die Zwischenablage zu kopieren. Wenn Sie etwas genaueres benötigen, müssen Sie wahrscheinlich ein benutzerdefiniertes Dialogfeld mit der gleichen Darstellung erstellen. wx.MessageBox ist nur ein Aufruf der nativen Message-Box-Funktion der Plattform. –

Antwort

5

Wenn Sie eine benutzerdefinierte MessageBox wie so machen, erscheint es statischen Text zu sein, bis Sie auf den Text klicken:

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() 

ich nur diese auf Windows getestet haben, können Sie die Farbe einstellen müssen, um für dein Betriebssystem.

+0

'Text.SetBackgroundColour (self.GetBackgroundColour())' ist wahrscheinlich eine bessere Passform. – Pod

Verwandte Themen