Причина, по которой я спрашиваю, заключается в том, что когда я создаю новую тему и добавляю ttk.Notebook(root) в свой код, вкладки имеют закругленные углы, чего я не хочу.
Вот пример:
Код: Выделить всё
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
root.title("Tab Example")
root.geometry('270x270')
background = '#ffffff'
background_dark = '#f2f2f2'
style = ttk.Style()
style.theme_create('white', settings={
'TLabel': {'configure': {'background': background}},
'TFrame': {'configure': {'background': background}},
'TNotebook': {
'configure': {'background': background_dark, 'tabmargins': [0, 7, 2, 0], 'padding': [7, 2]}},
'TNotebook.Tab': {
'configure': {'background': background_dark, 'padding': [7, 2], 'focuscolor': 'clear'},
'map': {'background': [('selected', background)]}}})
style.theme_use('white')
tab = ttk.Notebook(root)
tab1 = ttk.Frame(tab)
tab2 = ttk.Frame(tab)
tab.add(tab1, text='Tab 1')
tab.add(tab2, text='Tab 2')
tab.pack(expand=1, fill="both")
ttk.Label(tab1, text="example").pack(padx=36, pady=36)
ttk.Label(tab2, text="example 2").pack(padx=36, pady=36)
root.mainloop()
Если нет способа просмотреть настройки темы (не могу найти его в документации), существует ли список возможных настроек, которые я могу использовать? Что-то специально для границ вкладок?
В этой заметке есть аналогичный вопрос: есть ли ссылка на стиль Tkinter/ttk? однако в первой ссылке в предоставленном ответе ничего не указано для углов границ или стилей границ в ttk::notebook, а вторая ссылка не отвечает.
РЕДАКТИРОВАТЬ
Расширяя ответ Atlas435,
Код: Выделить всё
style_name = ttk.Notebook(None).winfo_class()
# print(style_name) -> 'TNotebook'
print(style.layout('TNotebook')) # -> [('Notebook.client', {'sticky': 'nswe'})]
print(style.element_options('Notebook.client')) # -> ('borderwidth', 'background')
Код: Выделить всё
style.theme_create('white', settings={
'TNotebook': {'configure':
{'background': background_dark, 'tabmargins': [0, 7, 2, 0], 'padding': [7, 2]}}})
Код: Выделить всё
print(style.layout('Tab')) # -> [('Notebook.tab', {'sticky': 'nswe', 'children': [('Notebook.padding', {'sticky': 'nswe', 'children': [('Notebook.label', {'sticky': 'nswe'})]})]})]
print(style.element_options('Notebook.tab')) # -> ('borderwidth', 'background')
Код: Выделить всё
Notebook.paddingEDIT 2
Некоторые параметры стиля нигде не перечислены, включая документацию Tcl/Tk.
Примером этого является 'focuscolor' для 'TNotebook.Tab', который меняет цвет пунктирных линий вокруг Вкладка, когда она находится в фокусе.
Другой пример: при использовании ttk.Style().theme_use('default') или .theme_use('classic') вкладки в Notebook имеют закругленные края. Если вы используете .theme_use('clam') или .theme_use('vista'), вкладки в Notebook не имеют закругленных краев. закругленные края.
Я не могу найти этот параметр стиля ни в какой документации, и я не могу его распечатать через программу (см. раздел Редактировать выше).
На данный момент я принимаю лучший на данный момент ответ (Atlas435), который помог мне прийти к такому выводу.
Временным решением для тех, кто наткнулся на это, может быть установка либо «моллюска», либо 'vista' в качестве родительского при использовании ttk.Style().theme_create() или для создания изображения, похожего на вкладку с нужным вам стилем, и используйте tab.add(tab1, image=img)
FINAL
Полный список доступен, ознакомьтесь с ответом Atlas 435
Подробнее здесь: https://stackoverflow.com/questions/654 ... e-settings
Мобильная версия