Tkinter ttk посмотреть пользовательские настройки темыPython

Программы на Python
Ответить
Anonymous
 Tkinter ttk посмотреть пользовательские настройки темы

Сообщение Anonymous »

Можно ли после использования ttk.Style().theme_create('name', settings={}) увидеть настройки этой темы?
Причина, по которой я спрашиваю, заключается в том, что когда я создаю новую тему и добавляю 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()
Если вы удалите style.theme_create() / style.theme_use(), вкладки больше не будут иметь закругленных углов, поэтому программа должна добавлять этот стиль по умолчанию.
Если нет способа просмотреть настройки темы (не могу найти его в документации), существует ли список возможных настроек, которые я могу использовать? Что-то специально для границ вкладок?
В этой заметке есть аналогичный вопрос: есть ли ссылка на стиль 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')
За исключением «фона», я не вижу названий пользовательских настроек, которые я использовал выше для «TNotebook»:

Код: Выделить всё

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')
Циклическое переключение других element_options (

Код: Выделить всё

Notebook.padding
и Notebook.label) также не предоставляют нужные мне значения:(
EDIT 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»