Python tkinter如何修改Entry输入框控件的默认背景颜色
核心错误原因
你代码中配置的是TTK组件的样式规则,但实际创建的是原生Tkinter的Entry控件,原生控件不识别TTK的Style配置,所以样式不生效。
修复方案
方案1:继续使用原生Tkinter Entry,直接配置对应参数
原生Entry的只读状态背景色直接通过readonlybackground参数设置即可,不需要额外配置Style,修改代码如下:
import tkinter as objTK objWindow = objTK.Tk() # 直接在初始化或config时指定readonlybackground objEntry = objTK.Entry(master=objWindow, width=10, readonlybackground="blue") objEntry.place(x=10, y=10) objEntry.insert(0, "Test") objEntry.config(state="readonly") objWindow.geometry("100x100") objWindow.bind("<Escape>", lambda _: objWindow.destroy()) objWindow.mainloop()
方案2:改用TTK Entry,沿用你写的Style配置
将创建Entry的代码替换为TTK的Entry组件即可匹配你预设的样式:
import tkinter as objTK from tkinter import ttk as objTTK objWindow = objTK.Tk() objStyle = objTTK.Style() objStyle.theme_use("clam") objStyle.map("TEntry", background=[("readonly", "blue")], fieldbackground=[("readonly", "blue")]) # 改用objTTK.Entry创建控件 objEntry = objTTK.Entry(master=objWindow, width=10) objEntry.place(x=10, y=10) objEntry.insert(0, "Test") objEntry.config(state="readonly") objWindow.geometry("100x100") objWindow.bind("<Escape>", lambda _: objWindow.destroy()) objWindow.mainloop()
内容的提问来源于stack exchange,提问作者Sandeep S D
相关产品推荐
相关产品推荐

