qq_34100299 2022-10-28 22:19 采纳率: 0%
浏览 12

tk的entry的state与背景颜色有bug

最近学习了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()


img

就是改不了这个白色框的背景色

img

起先我怀疑是grey跟readonly有bug,无论我怎么改变背景颜色都是白色,我更改了state
后背景颜色也是白色,所以我觉得有了state就不能设置背景颜色了

我想知道这是不是bug 还是规定的写了state就不能有背景颜色
  • 写回答

1条回答 默认 最新

  • Ko-walski 2022-10-28 22:35
    关注

    不是
    请发完整代码

    评论

报告相同问题?

问题事件

  • 修改了问题 10月28日
  • 创建了问题 10月28日

悬赏问题

  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费
  • ¥15 kafka无法正常启动(只启动了一瞬间会然后挂了)
  • ¥30 使用matlab将观测点聚合成多条目标轨迹
  • ¥15 Workbench中材料库无法更新,如何解决?
  • ¥20 如何推断此服务器配置
  • ¥15 关于github的项目怎么在pycharm上面运行
  • ¥15 内存地址视频流转RTMP
  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 有没有整苹果智能分拣线上图像数据