यह wxwidgets की एक विशेषता है, और wxPython में लागू नहीं किया गया है।
http://www.wxpython.org/docs/api/wx.TextValidator-class.html - नहीं मिला
जबकि:
http://docs.wxwidgets.org/trunk/classwx_text_validator.html http://docs.wxwidgets.org/stable/wx_wxtextvalidator.html
wxPython डेमो में सत्यापनकर्ता के एक डेमो है:
import wx
class TextObjectValidator(wx.PyValidator):
""" This validator is used to ensure that the user has entered something
into the text object editor dialog's text field.
"""
def __init__(self):
""" Standard constructor.
"""
wx.PyValidator.__init__(self)
def Clone(self):
""" Standard cloner.
Note that every validator must implement the Clone() method.
"""
return TextObjectValidator()
def Validate(self, win):
""" Validate the contents of the given text control.
"""
textCtrl = self.GetWindow()
text = textCtrl.GetValue()
if len(text) == 0:
wx.MessageBox("A text object must contain some text!", "Error")
textCtrl.SetBackgroundColour("pink")
textCtrl.SetFocus()
textCtrl.Refresh()
return False
else:
textCtrl.SetBackgroundColour(
wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
textCtrl.Refresh()
return True
def TransferToWindow(self):
""" Transfer data from validator to window.
The default implementation returns False, indicating that an error
occurred. We simply return True, as we don't do any data transfer.
"""
return True # Prevent wxDialog from complaining.
def TransferFromWindow(self):
""" Transfer data from window to validator.
The default implementation returns False, indicating that an error
occurred. We simply return True, as we don't do any data transfer.
"""
return True # Prevent wxDialog from complaining.
#----------------------------------------------------------------------
class TestValidateDialog(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, -1, "Validated Dialog")
self.SetAutoLayout(True)
VSPACE = 10
fgs = wx.FlexGridSizer(0, 2)
fgs.Add((1,1));
fgs.Add(wx.StaticText(self, -1,
"These controls must have text entered into them. Each\n"
"one has a validator that is checked when the Okay\n"
"button is clicked."))
fgs.Add((1,VSPACE)); fgs.Add((1,VSPACE))
label = wx.StaticText(self, -1, "First: ")
fgs.Add(label, 0, wx.ALIGN_RIGHT|wx.CENTER)
fgs.Add(wx.TextCtrl(self, -1, "", validator = TextObjectValidator()))
fgs.Add((1,VSPACE)); fgs.Add((1,VSPACE))
label = wx.StaticText(self, -1, "Second: ")
fgs.Add(label, 0, wx.ALIGN_RIGHT|wx.CENTER)
fgs.Add(wx.TextCtrl(self, -1, "", validator = TextObjectValidator()))
buttons = wx.StdDialogButtonSizer() #wx.BoxSizer(wx.HORIZONTAL)
b = wx.Button(self, wx.ID_OK, "OK")
b.SetDefault()
buttons.AddButton(b)
buttons.AddButton(wx.Button(self, wx.ID_CANCEL, "Cancel"))
buttons.Realize()
border = wx.BoxSizer(wx.VERTICAL)
border.Add(fgs, 1, wx.GROW|wx.ALL, 25)
border.Add(buttons)
self.SetSizer(border)
border.Fit(self)
self.Layout()
app = wx.App(redirect=False)
f = wx.Frame(parent=None)
f.Show()
dlg = TestValidateDialog(f)
dlg.ShowModal()
dlg.Destroy()
app.MainLoop()
लेकिन अगर मुझे संख्याओं को प्रतिबंधित करने के लिए अक्षरों और दूसरे टेक्स्ट बॉक्स को प्रतिबंधित करने के लिए पहले टेक्स्टबॉक्स की आवश्यकता है तो मुझे क्या करना चाहिए? क्या मुझे दो अलग-अलग वर्ग लिखने की आवश्यकता है? – RSK
हां, आदर्श रूप से आप उन्हें कुछ पुनः उपयोग करने योग्य उपयोगिता पुस्तकालय में रखेंगे। –
उत्तर के लिए धन्यवाद .... – RSK