如何在 Tkinter 的输入字段中只允许某些参数

编程入门 行业动态 更新时间:2024-10-24 06:27:47
本文介绍了如何在 Tkinter 的输入字段中只允许某些参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时送ChatGPT账号..

如果我想要一个 Tkinter 中的输入框,它只接受大于或等于 0.0 且小于或等于 1.0 的浮点数,我该怎么做?

If i want an entry box in Tkinter that only accepts floating point numbers that are greater than or equal to 0.0 and less than or equal to 1.0 how would i do that?

推荐答案

正确使用 tkinter 的验证功能.但它确实是一个 PIA 使用.

The proper way it to use tkinter's validate capabilities. But it's really a PIA to use.

dsgdfg 有一个很好的答案,但我可以让它更简洁、更健壮、更动态:

dsgdfg has a good answer, but I can make that a lot neater, robust, and more dynamic:

import Tkinter as tk

class LimitedFloatEntry(tk.Entry):
    '''A new type of Entry widget that allows you to set limits on the entry'''
    def __init__(self, master=None, **kwargs):
        self.var = tk.StringVar(master, 0)
        self.var.trace('w', self.validate)
        self.get = self.var.get
        self.from_  = kwargs.pop('from_', 0)
        self.to = kwargs.pop('to', 1)
        self.old_value = 0
        tk.Entry.__init__(self, master, textvariable=self.var, **kwargs)

    def validate(self, *args):
        try:
            value = self.get()
            # special case allows for an empty entry box
            if value not in ('', '-') and not self.from_ <= float(value) <= self.to:
                raise ValueError
            self.old_value = value
        except ValueError:
            self.set(self.old_value)

    def set(self, value):
        self.delete(0, tk.END)
        self.insert(0, str(value))

您可以像使用 Entry 小部件一样使用它,除了现在您有 'from_' 和 'to' 参数来设置允许范围:

You use it just like an Entry widget, except now you have 'from_' and 'to' arguments to set the allowable range:

root = tk.Tk()
e1 = LimitedFloatEntry(root, from_=-2, to=5)
e1.pack()
root.mainloop()

这篇关于如何在 Tkinter 的输入字段中只允许某些参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-04-30 05:50:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1390177.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字段   只允许   参数   如何在   Tkinter

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!