Установить стиль для ttk.Combobox - PullRequest
1 голос
/ 05 апреля 2020

Чтобы установить стиль для 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. Как я могу это сделать?

Я использую Python 3 на Windows 10.

Любая помощь очень ценится.

1 Ответ

1 голос
/ 05 апреля 2020

Ваш оригинальный метод настраивает глобальную тему. Чтобы получить тему, которая будет прикреплена к одному компоненту, вы должны создать ее и прикрепить к классу виджетов.

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