我不知道通过简单的切换设置来做这样的事情的方法,我想你需要通过信号处理这个,一种方法是连接到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']))
Run Code Online (Sandbox Code Playgroud)
如果你想要格式化的数字,你当然可以使用正则表达式或其他东西更加花哨,以确定哪些字符应保留在条目中.
编辑
因为您可能不想在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)
Run Code Online (Sandbox Code Playgroud)