Я бы не знал, как сделать что-то подобное простым переключением настроек, я думаю, вам нужно будет обработать это с помощью сигналов, один из способов - подключиться к сигналу changed
, а затем отфильтровать что-нибудь это не число.
Простой подход (не проверен, но должен работать):
class NumberEntry(gtk.Entry):
def __init__(self):
gtk.Entry.__init__(self)
self.connect('changed', self.on_changed)
def on_changed(self, *args):
text = self.get_text().strip()
self.set_text(''.join([i for i in text if i in '0123456789']))
Если вам нужны отформатированные числа, вы, конечно, можете использовать более регулярные выражения или что-то еще, чтобы определить, какие символы должны оставаться внутри записи.
EDIT
Поскольку вы, возможно, не захотите создавать свою запись в Python, я собираюсь показать вам простой способ «нумеровать» существующую.
def numbify(widget):
def filter_numbers(entry, *args):
text = entry.get_text().strip()
entry.set_text(''.join([i for i in text if i in '0123456789']))
widget.connect('changed', filter_numbers)
# Use gtk.Builder rather than glade, you'll need to change the format of your .glade file in Glade accordingly
builder = gtk.Builder()
builder.add_from_file('yourprogram.glade')
entry = builder.get_object('yourentry')
numbify(entry)