2010-07-14 56 views
0

的孙子我有这样的事情:现在wxPython的验证没有呼吁对话

class ADialog(wx.Dialog): 
    def __init__(self, parent, *args, **kwargs): 
     ... 
     self.editor = APanel(parent=self) 
     ... 
    ... 

class APanel(wx.Panel): 
    def CreatePanel(self, *args, **kwargs): 
     ... 
     self.textCtrls = [] 
     for (key, val) in zip(foo, bar): 
      ... 
      box = wx.TextCtrl(parent=self, value=val, validator=Validator()) 
      .... 

,我需要有APanel独立的,因为文本控件必须动态地改变。

问题是,Validator的方法Validate()永远不会被调用。

我试图传递标志wx.WS_EX_VALIDATE_RECURSIVELYwx.Dialog.__init__,并且还试图重写ADialog的Validate()方法来调用Validate()上APanel,然后覆盖APanel的Validate()方法来调用每个文本控件的验证,但没也不行。

操作系统:Windows 7
Python版本:2.5.4
wxPython的版本:2.8.10

回答

3

wx.WS_EX_VALIDATE_RECURSIVELY是一个扩展的样式,所以你需要用SetExtraStyle设置它,而不是将它传递给基类'__init__