Tkinter 避免小数点重复

Tkinter Avoid Decimal Dot Repeatse

所以我有一个非常简单的问题,因为我对编程还很陌生。差不多,我正在使用 tkinter 构建一个计算器,我有一个小数点按钮和一个小数点绑定函数来将它与点 (.) 绑定。我的小问题是,当我点击小数点按钮几次时,我的条目小部件允许小数点重复。例如,这可能发生:873...40..4。我怎样才能让我的输入小部件识别出整数中有多个小数点,所以它不允许这种情况发生。

这是我目前尝试过的方法:

def key_decimal(number):

    string = e.get()
    e.delete(0, END)
    e.insert(0, string + '.')
    if string == int(string) + '..':
        e.delete(e.index('end') - 1)

因为 .get() returns 一个字符串,对其调用 count() 方法

def key_decimal(number):

    string = e.get()
    if string.count('.')<=1:
        print('True')
    else:
        print('False')

您可以替换任何您需要的代码,而不是 True 或 False

您可以使用 tkinter 输入验证来防止输入超过 1 个小数点。

from tkinter import *

window = Tk()

def decimal_check(proposed):
    if proposed.count('.') <= 1:
        return True
    else:
        return False

number = Entry(window, validate="all")
number['validatecommand'] = (number.register(decimal_check),'%P')
number.pack()

window.mainloop()

每当对条目小部件进行更改时,此代码将 运行 decimal_check 函数。如果用户尝试输入多于 1 个小数点,则不会更新该值。