最近学习了tkinter写了一个计算器,发现了一个bug,我写了entry中设置成不能readonly后,不能改这个文本框的背景色
master=Tk()
master.configure(bg='rosybrown')
v1=StringVar()
v2=StringVar()
v3=StringVar()
def test(content):
return content.isdigit()
frame=Frame(master,bg='rosybrown')
frame.pack(padx=10,pady=10)
testCMD=master.register(test)
e1=Entry(frame,textvariable=v1,validate="key",font=('黑体',20),width=7,bg='grey',
validatecommand=(testCMD,'%P')).grid(row=0,column=0)
Label(frame,text="=",font=('黑体',20),bg='rosybrown').grid(row=0,column=3)
e2=Entry(frame,textvariable=v2,validate="key",font=('黑体',20),width=7,bg='grey',
validatecommand=(testCMD,'%P')).grid(row=0,column=2)
s=StringVar()
s.set(" ")
v=IntVar()
v_index=IntVar()
v.set(0)
Label(frame,textvariable=s,font=('黑体',20),bg='rosybrown').grid(row=0,column=1)
def add():#加
s.set("+")
v_index.set(v.get())
def subt():
s.set("-")
v_index.set(v.get())
def mult():
s.set("×")
v_index.set(v.get())
def divi():
s.set("÷")
v_index.set(v.get())
def calc():
a=int(v1.get())
b=int(v2.get())
if v_index.get()==1:
v3.set(a+b)
elif v_index.get()==2:
v3.set(a-b)
elif v_index.get()==3:
v3.set(a*b)
elif v_index.get()==4:
v3.set(a/b)
def exit():
master.destroy()
def delete():#清空
v1.set("")
v2.set("")
v3.set("")
Radiobutton(frame,text="+",font=('黑体',20),command=add,value=1,variable=v
,width=5,height=2,bg="yellow",indicatoron=False).grid(row=1,column=0,pady=8)
Radiobutton(frame,text="-",font=('黑体',20),command=subt,value=2,variable=v
,width=5,height=2,bg="yellow",indicatoron=False).grid(row=1,column=2,pady=8)
Radiobutton(frame,text="×",font=('黑体',20),command=mult,value=3,variable=v
,width=5,height=2,bg="yellow",indicatoron=False).grid(row=2,column=0,pady=5)
Radiobutton(frame,text="÷",font=('黑体',20),command=divi,value=4,variable=v
,width=5,height=2,bg="yellow",indicatoron=False).grid(row=2,column=2,pady=5)
Radiobutton(frame,text="等于",font=('黑体',20),command=calc,value=5,variable=v
,width=5,height=2,bg="yellow",indicatoron=False).grid(row=1,column=4,pady=5)
Radiobutton(frame,text="退出",font=('黑体',20),command=exit,value=6,variable=v
,width=5,height=2,bg="pink",indicatoron=False).grid(row=2,column=4,pady=5)
Radiobutton(frame,text="C",font=('黑体',20),command=delete,value=6,variable=v
,width=5,height=2,bg="pink",indicatoron=False).grid(row=4,column=4,pady=5)
e3=Entry(frame,textvariable=v3,font=('黑体',20),width=7,fg='brown',bg='rosybrown')
e3.grid(row=0,column=4)
e3.config(state="readonly")
mainloop()
就是改不了这个白色框的背景色
起先我怀疑是grey跟readonly有bug,无论我怎么改变背景颜色都是白色,我更改了state
后背景颜色也是白色,所以我觉得有了state就不能设置背景颜色了