我使用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()
答案 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键绑定到触发错误的事件或执行以下操作的函数: 从输入框中获取值 消除最后一项(字母) 将条目值设置为剩余数字
对于所有实际意图和目的,用户看来他们不能输入信件。 它可能不是最优雅的解决方案,但我必须认为它会起作用。