2016-05-09 4 views
0

Ich bin wxpython Benutzer. Ich habe eine Frage zur Steuerung der TextCtrl-Funktion. Was ich ein Programm erstellen möchte, ist, dass Wenn Sie auf eine Schaltfläche klicken, wird der Wert von TextCtrl geändert. Mein Quellcode wird verfolgt.Wie steuert man eine Funktion von TextCtrl als dynamisch in wxpython?

#!/usr/bin/python 
import wx 

class Tom(wx.Dialog): 
    def __init__(self, parent, id, title): 
     wx.Dialog.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(400, 420)) 

     panel = wx.Panel(self, -1) 
     vbox = wx.BoxSizer(wx.HORIZONTAL) 

     self.write = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE, value=self.message) 
     button_send = wx.Button(panel, 1, label='b'+'1', 'Send') 

     vbox.Add(self.write, 1, wx.EXPAND | wx.TOP | wx.RIGHT | wx.LEFT | wx.BOTTOM, 15) 
     vbox.Add(button_send, 0, wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, 20) 
     self.Bind(wx.EVT_BUTTON, self.OnSend, id=1) 
     panel.SetSizer(vbox) 
     self.Centre() 

    def OnSend(self, event): 
     b=event.GetEventObject().GetLabel() 
     if b.endswith('1'): 
      self.message = "sss" 
      self.setWrite(self.message) 


class MyApp(wx.App): 
    def OnInit(self): 
     frame = Tom(None, -1, 'Tom') 
     frame.ShowModal() 
     frame.Destroy() 
     return True 

app = MyApp(0) 
app.MainLoop() 

Wenn wer die Lösung über das weiß, bitte kommentieren Sie mich. Danke.

Antwort

1

Verwenden self.write.SetValue()
Altered leicht python-gtk3.0

#!/usr/bin/python 
import wx 

class Tom(wx.Dialog): 
    def __init__(self, parent, id, title): 
     wx.Dialog.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(400, 420)) 

     panel = wx.Panel(self, -1) 
     vbox = wx.BoxSizer(wx.HORIZONTAL) 
     self.message="" 
     self.write = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE, value=self.message) 
     button_send = wx.Button(panel, 1, label='b1') 

     vbox.Add(self.write, 1, wx.EXPAND | wx.TOP | wx.RIGHT | wx.LEFT | wx.BOTTOM, 15) 
     vbox.Add(button_send, 0, wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, 20) 
     self.Bind(wx.EVT_BUTTON, self.OnSend, id=1) 
     panel.SetSizer(vbox) 
     self.Centre() 

    def OnSend(self, event): 
     b=event.GetEventObject().GetLabel() 
     if b.endswith('1'): 
      self.message = self.message+"sss" 
      self.write.SetValue(self.message) 


class MyApp(wx.App): 
    def OnInit(self): 
     frame = Tom(None, -1, 'Tom') 
     frame.ShowModal() 
     frame.Destroy() 
     return True 

app = MyApp() 
app.MainLoop() 
+0

Dank für eine gute Lösung laufen mit. Ich habe den Quellcode überprüft, der funktioniert. –

Verwandte Themen