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

我的Python计算器程序允许字符输入,python,error-handling,tkinter,calculator,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="pi

我已经用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()

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

display= tk.Entry(root, width=33, bg="pink", disabledbackground="pink", state=tk.DISABLED)
然后在单击功能开始时访问其状态并将其更改为“正常”,然后在结束时返回到“禁用”


请参阅:

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

出于所有实际目的,用户似乎无法输入字母。
这可能不是最优雅的解决方案,但我不得不认为它会起作用

如果有帮助的话,这也是在Python3.3中创建的。