首页 > 解决方案 > 设置 ttk.Combobox 的样式

问题描述

要设置 ttk.Combobox 的样式,我可以这样做:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

combostyle = ttk.Style()

combostyle.theme_create('combostyle', parent='alt',
                         settings = {'TCombobox':
                                     {'configure':
                                      {'selectbackground': 'blue',
                                       'fieldbackground': 'red',
                                       'background': 'green'
                                       }}}
                         )
combostyle.theme_use('combostyle') 

combo = ttk.Combobox(root, values=['1', '2', '3'])
combo['state'] = 'readonly'
combo.pack()

entry = tk.Entry(root)
entry.pack()

root.mainloop()

但这为所有tkinter 和 ttk 小部件设置了主题。我只想为Combobox设置样式。我怎样才能做到这一点?

我在 Windows 10 上使用 Python 3。

任何帮助是极大的赞赏。

标签: pythontkinterttk

解决方案


您的原始方法配置了一个全局主题。要将主题附加到一个组件,您必须创建它并将其附加到小部件类。

combostyle.configure('MyCustomStyleName.TCombobox', selectbackground = 'blue', ........) 
combo = ttk.Combobox(root, values=['1', '2', '3'], style = 'MyCustomStyleName.TCombobox')

推荐阅读