10 Stimmen

Ist es möglich, TextCtrl zu beschränken, nur Zahlen in wxPython zu akzeptieren?

Ich möchte ein Textsteuerelement haben, das nur Zahlen akzeptiert. (Nur ganzzahlige Werte wie 45 oder 366)

Wie lässt sich dies am besten bewerkstelligen?

0voto

Ich wollte das Gleiche, aber für Floats, also habe ich die folgende Methode in der Klasse verwendet:

 def force_numeric(self, event, edit):
    raw_value =  edit.GetValue().strip()
    keycode = event.GetKeyCode()
    if keycode < 255:
        print('keycode:', keycode,'chr(keycode) ', chr(keycode))
        if chr(keycode).isdigit() or chr(keycode)=='.' and '.' not in raw_value:
            print('skip')
            event.Skip()

um das Ereignis im Konstruktor zu registrieren:

    item = wx.TextCtrl(self.panel, -1, str(pose_config['locref_stdev']))
    item.Bind(wx.EVT_CHAR, lambda event: self.force_numeric(event, item))

Abänderung der obigen Antwort

-1voto

alwbtc Punkte 25685

Bitte prüfen Sie das Skript "Validator.py" in der wxpython-Demo. Es ist genau das, was Sie brauchen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X