创建仅接受数字的pygtk文本字段

zfr*_*cus 3 python pygtk glade

有没有人知道如何使用仅接受数字的PyGTK创建文本字段.我正在使用Glade构建我的UI.

干杯,

Ivo*_*zel 7

我不知道通过简单的切换设置来做这样的事情的方法,我想你需要通过信号处理这个,一种方法是连接到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)