我在Python中的计算器程序允许字符输入

时间:2014-04-29 21:17:07

标签: python error-handling tkinter calculator

我使用Tkinter在Python中创建了一个计算器程序,它完全正常工作;但是当我运行它时,你可以点击我的计算器顶部的输入框并输入字符。我编写了代码,以便在发生这种情况时发生错误但仍会出现这些字符。如果我不能禁止这种情况发生,我将不胜感激。

import tkinter as tk

root=tk.Tk()

root.geometry("198x125")
root.title("Calculator")
display= tk.Entry(root, width=33, bg="pink")
display.grid(row=1, column=0, columnspan=5)

def click(key):
    if key =='=':
        str1="123456789"
        if display.get() [0] not in str1:
            display.insert(tk.END, "First character is not valid")
        try:
            result=eval(display.get())
            display.insert(tk.END, "="+str(result))
        except:
            display.insert(tk.END, "--> ERROR")
    elif key== 'C':
        display.delete(0, tk.END)
        if '=' in display.get():
            entry.display(0, tk.END)
    else:
        if '=' in display.get():
            display.get(0, tk.END)
        display.insert(tk.END, key)

button_list = [
'7','8','9','/',
'4','5','6','*',
'1','2','3','-',
'0','+','C','=',]
r = 2
c = 0
for t in button_list:
    cmd=lambda x=t: click(x)
    tk.Button(root, text=t, width=5, command=cmd).grid(row=r, column=c)
    c +=1
    if c > 3:
        c = 0
        r +=1

root.mainloop()

2 个答案:

答案 0 :(得分:0)

使用state=DISABLED选项在条目空闲时禁用条目,如果要保留颜色,只需使用disabledbackground选项:

display= tk.Entry(root, width=33, bg="pink", disabledbackground="pink", state=tk.DISABLED)

然后访问其状态并在点击功能开始时将其更改为正常,并在结束时返回到禁用状态。

请参阅:http://effbot.org/tkinterbook/entry.htm#Tkinter.Entry.config-method

答案 1 :(得分:0)

我不知道这是否有效,但我会尝试将alpha键绑定到触发错误的事件或执行以下操作的函数: 从输入框中获取值 消除最后一项(字母) 将条目值设置为剩余数字

对于所有实际意图和目的,用户看来他们不能输入信件。 它可能不是最优雅的解决方案,但我必须认为它会起作用。