Tkinter避免小数点重复



所以我有一个非常简单的问题,因为我是一个非常新的编程。基本上,我正在使用tkinter构建一个计算器,我有一个十进制按钮和一个十进制绑定函数来将它与点(.)绑定。我的小问题是,我的条目小部件允许在单击小数按钮几次时重复小数。例如:873…40…我怎样才能使我的条目小部件识别出整数中有多个小数点,从而不允许这种情况发生呢?

这是我到目前为止尝试过的:

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)

您可以使用tkinter Entry验证来防止输入超过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个小数点,该值将不会被更新。

由于.get()返回一个字符串,因此调用count()方法

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

你可以用任何你需要的代码代替True或False