首页 > 解决方案 > Tkinter 避免小数点重复

问题描述

所以我有一个非常简单的问题,因为我对编程很陌生。几乎,我正在使用 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)

标签: pythontkinterdecimal

解决方案


您可以使用 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 个小数点,则不会更新该值。


推荐阅读