【问题标题】:Tkinter Avoid Decimal Dot RepeatseTkinter 避免小数点重复
【发布时间】:2021-08-02 15:25:08
【问题描述】:

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

【问题讨论】:

    标签: python tkinter decimal


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      由于.get()返回一个字符串,在其上调用count()方法

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-05
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 2021-08-01
        • 2011-07-14
        • 1970-01-01
        相关资源
        最近更新 更多