如何修改Python TTK Combobox失焦状态下的前景色与背景色
TTK Combobox 只读状态失焦颜色修改方案
你之前代码中使用的backgroundcolor、foregroundcolor不是TTK样式的合法配置参数,同时readonly状态的控件样式优先级高于基础样式配置,需要单独通过状态映射指定对应颜色才能生效。
修改后的完整代码如下:
import tkinter as objTK from tkinter import ttk as objTTK objWindow = objTK.Tk() objStyle = objTTK.Style() objStyle.theme_use("clam") # 基础样式配置 objStyle.configure("TCombobox", fieldbackground="white", # 输入区域背景色 foreground="black", # 文本前景色 background="white" # 下拉按钮区域背景色 ) # 状态映射:指定不同状态下的颜色 objStyle.map("TCombobox", fieldbackground=[("readonly", "white")], foreground=[("readonly", "black")], # 聚焦选中状态可按需调整,不需要修改可删除 selectbackground=[("readonly focus", "#0078d7")], selectforeground=[("readonly focus", "white")] ) tMonths = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") cbDtRStM = objTTK.Combobox(master=objWindow, width=10, state="readonly", values=tMonths) cbDtRStM.pack() btnButton = objTTK.Button(master=objWindow, text="Test") btnButton.pack() objWindow.bind("<Escape>", lambda funcWinSum: objWindow.destroy()) objWindow.mainloop()
运行后readonly状态失焦时,输入框文本会显示为黑色、背景为白色,符合你的需求。
内容的提问来源于stack exchange,提问作者Sandeep S D
相关产品推荐
相关产品推荐

