You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:15:04