Установка цвета фона рамки tkinter ttk - PullRequest
0 голосов
/ 01 февраля 2019

Я хочу просто установить цвет фона для рамки в окне tkinter.Цвет фона для окна был успешно установлен, но не для рамки внутри.Простой ввод bg = 'color_name или color_code' не работает.

Как можно установить цвет фона рамки ttk?

В дополнение к этому, есть ли способ также изменить другие параметры виджета, например, цвет, шрифты на панели вкладок?

Я пытался использовать команду bg = 'Color_name или color_code', а также пытался использовать frame_name = config (bg = 'color_name or color_code').Ни один не работал.

from tkinter import * 
from tkinter import ttk 


window = Tk() 
window.title("Title Name") 
window.config(bg='#FFFAFA')
window.geometry('1024x800')


menubar = Menu(window) 
filemenu = Menu(menubar,tearoff=0)
menubar.add_cascade(label='File',menu=filemenu)
filemenu.add_command(label='Open')
filemenu.add_command(label='Clear')
filemenu.add_command(label='Save As')
filemenu.add_separator()
filemenu.add_command(label='Exit')


helpmenu = Menu(menubar,tearoff=0)
menubar.add_cascade(label='Help',menu=helpmenu)
helpmenu.add_command(label='Precuations')
helpmenu.add_command(label='Version Info')
helpmenu.add_command(label='Technical Support')

window.config(menu=menubar)

rows = 0
while rows<50:
    window.rowconfigure(rows,weight=1)
    window.columnconfigure(rows, weight=1)
    rows +=1

#creation of frame
mainframe = ttk.Notebook(window,width=50)
mainframe.grid(row=1,column=2,columnspan=45,rowspan=43,sticky='NESW')

#create tabs within the frame
tab1 = ttk.Frame(mainframe)
mainframe.add(tab1, text="Tab1")


tab2 = ttk.Frame(mainframe)
mainframe.add(tab2, text="Tab2")


tab3 = ttk.Frame(mainframe)
mainframe.add(tab3, text="Tab3")

tab4 = ttk.Frame(mainframe)
mainframe.add(tab4, text="Tab4")

tab5 = ttk.Frame(mainframe)
mainframe.add(tab5, text="Tab4")

window.mainloop()

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

При использовании ttk виджетов все стили должны выполняться с использованием ttk.Style.

. Вам необходимо инициализировать класс стилей с помощью s = ttk.Style(), а затем изменить атрибуты различных стилей виджетов с помощью s.configure('StyleName', option='value')

Вы можете найти имена стилей по умолчанию здесь .Так что для Frame имя стиля - TFrame.Когда вы настраиваете опцию для этого стиля, она будет использоваться всеми фреймами.Если вы хотите настроить опцию для отдельного фрейма, вы можете создать новый стиль на основе исходного стиля, используя имя формы newName.oldName.В вашем случае это может быть Frame1.TFrame.Затем вы можете указать фрейму использовать этот стиль, передав style='Frame1.TFrame'.

Если вы используете в своем коде следующее, вы увидите, что первый кадр красный, второй синий и все остальные кадрызеленый:

# Initialize style
s = ttk.Style()
# Create style used by default for all Frames
s.configure('TFrame', background='green')

# Create style for the first frame
s.configure('Frame1.TFrame', background='red')
# Use created style in this frame
tab1 = ttk.Frame(mainframe, style='Frame1.TFrame')
mainframe.add(tab1, text="Tab1")

# Create separate style for the second frame
s.configure('Frame2.TFrame', background='blue')
# Use created style in this frame
tab2 = ttk.Frame(mainframe, style='Frame2.TFrame')
mainframe.add(tab2, text="Tab2")
0 голосов
/ 01 февраля 2019

Вы используете виджеты ttk, у которых параметры стилей заключены в стили.Таким образом, для виджетов ttk вы не можете напрямую изменять такие параметры стиля, как bgcolor.Вы должны редактировать или создавать новые стили.Подробнее об этом здесь: http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-style-layer.html

Измените свой код, чтобы отобразить новый цвет:

# create frame style
s = ttk.Style()
s.configure('new.TFrame', background='#7AC5CD')

#create tabs within the frame
tab1 = ttk.Frame(mainframe, style='new.TFrame')
mainframe.add(tab1, text="Tab1")


tab2 = ttk.Frame(mainframe, style='new.TFrame')
mainframe.add(tab2, text="Tab2")


tab3 = ttk.Frame(mainframe, style='new.TFrame')
mainframe.add(tab3, text="Tab3")

tab4 = ttk.Frame(mainframe, style='new.TFrame')
mainframe.add(tab4, text="Tab4")

tab5 = ttk.Frame(mainframe, style='new.TFrame')
mainframe.add(tab5, text="Tab4")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...