2016-05-09 36 views
0

私はwxpythonユーザーです。私はTextCtrl関数を制御する方法について質問があります。私がプログラムを構築したいのは、あるボタンをクリックすると、TextCtrlの値が変更されます。私のソースコードに従います。wxpythonでTextCtrlの関数を動的に制御する方法は?

#!/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() 

解決策を知っている人は、私にコメントしてください。ありがとうございます。

答えて

1

利用self.write.SetValue()
の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

感謝を使用して実行するために、わずかに変化しました。私は良い仕事をしているソースコードをチェックしました。 –

関連する問題