2013-05-01 51 views
0

我是Python和OOP的新手,通常做C & VHDL。我必须定期在“窗口”中显示一个值,但似乎无法完成。如此,该值仅被提取一次,Quit不起作用。我试图根据我读过的很多帖子来修改它,但是我无法实现它。任何帮助将非常感激。WxPython:在TextCtrl中定期设置的值不起作用

这是我在论坛上的第二篇文章。请告知我的帖子是不是应该如此。 使用Python 2.7,wxPython的2.8,Windows 7的

import wx 
import threading 

class RspBox(wx.Frame): 


    def __init__(self, parent, title): 
     super(RspBox, self).__init__(parent, title=title, size=(500, 500)) 
     self.InitUI() 
     self.Centre() 
     self.Show()  

    def InitUI(self): 
     sizer = wx.GridBagSizer(7, 7)#(y,x) 

     self.Ybtn = wx.Button(self, label='Yellow') 
     self.Gbtn = wx.Button(self, label='Green') 
     self.Wbtn = wx.Button(self, label='White') 
     self.Rbtn = wx.Button(self, label='Red') 
     self.Bbtn = wx.Button(self, label='Blue') 
     self.ApplyBtn = wx.Button(self, id=wx.ID_APPLY, label='') 
     self.QuitBtn = wx.Button(self, id=wx.ID_ANY, label='Quit') 
     self.Label1 = wx.StaticText(self, label='Direction') 
     self.Label2 = wx.StaticText(self, label='Value') 
     self.Dir = wx.TextCtrl(self, style=wx.TE_LEFT, value='000000') 
     self.Val = wx.TextCtrl(self, style=wx.TE_READONLY, value='CAFE') 
     self.t = self.SetDirection() 

     sizer.Add(self.Ybtn, pos=(1, 2), span=(1, 1)) 
     sizer.Add(self.Gbtn, pos=(2, 1), span=(1, 1)) 
     sizer.Add(self.Wbtn, pos=(2, 2), span=(1, 1)) 
     sizer.Add(self.Rbtn, pos=(2, 3), span=(1, 1)) 
     sizer.Add(self.Bbtn, pos=(3, 2), span=(1, 1)) 
     sizer.Add(self.Label1, pos=(4, 1), span=(1, 1)) 
     sizer.Add(self.Dir, pos=(4, 2), span=(1, 2)) 
     sizer.Add(self.Label2, pos=(5, 1), span=(1, 1)) 
     sizer.Add(self.Val, pos=(5, 2), span=(1, 2)) 
     sizer.Add(self.ApplyBtn, pos=(6, 2), span=(1, 1)) 
     sizer.Add(self.QuitBtn, pos=(6, 3), span=(1, 1)) 

     self.Bind(wx.EVT_BUTTON, self.stop(self), self.QuitBtn) 

     self.SetSizer(sizer) 
     self.Fit() 
     self.Show() 


    def SetDirection(self): 
     """Set the TextCtrl Direction field periodically""" 
     Val = 3 #debug 
     self.Val.SetValue(str(Val)) 
     t = threading.Timer(1, self.SetDirection) 
     t.start() 
     print "SetDirection = %s" % Val #debug 
     return t 


    def stop(self, event): 
     self.t.cancel() 


if __name__ == '__main__': 
    print test 
    app = wx.App() 
    RspBox(None, title='ResponseBox') 
    app.MainLoop() 
+0

仍然是这个问题? – Aya 2013-05-23 12:12:22

+0

对不起。不再是问题。应该关闭它。 – BaldDude 2013-05-23 14:27:01

回答