в tkinter можем ли мы создать постоянную кнопку с этими свойствами стиля и применить ее к другим кнопкам, чтобы нам не нужно было писать ее снова и снова
e1 = Entry(root,(border=1, width=60,font=('Helvetica',10,'bold','italic'),borderwidth=3,relief ="ridge"))
e2 = Entry(root, border=1, width=60,font=('Helvetica',10,'bold','italic'),borderwidth=3,relief ="ridge")
e3 = Entry(root, border=1, width=60,font=('Helvetica',10,'bold','italic'),borderwidth=3,relief ="ridge")
e4 = Entry(root, border=1, width=60,font=('Helvetica',10,'bold','italic'),borderwidth=3,relief ="ridge")
e5 = Entry(root, border=1, width=60,font=('Helvetica',10,'bold','italic'),borderwidth=3,relief ="ridge")
Я хочу создать объект стиля по умолчанию, чтобы мне не нужно было писать свойства стиля для каждой кнопки
(border = 1, width = 60,font = ('Helvetica',10, 'bold', 'italic'),borderwidth = 3, Relief ="ridge") для этой части
2 ответа
С использованием option_add
, однако у него есть свои ограничения.
import tkinter as tk
root = tk.Tk()
root.option_add('*Label.Font','arial 14')
for i in range(10):
i = tk.Label(root, text=f'{i}')
i.pack()
root.mainloop()
С использованием ttk.Style()
:
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
style = ttk.Style(root)
style.theme_use('alt')#borderoptions
Label = ttk.Label(root, text='abc')
Label.pack(expand=True, fill='both')
style_name = Label.winfo_class()
style.layout(style_name,
[('Label.border', {'sticky': 'nswe', 'border': '1', 'children': [
('Label.padding', {'sticky': 'nswe', 'border': '1', 'children': [
('Label.label', {'sticky': 'nswe'})
]})
]})
])
print(style.layout(style_name))
print('Layout')
print(style.element_options('Label.border'))
print('border')
print(style.element_options('Label.label'))
print('label')
#print(style.element_options('Button.focus'))
#print('focus')
print(style.element_options('Label.padding'))
print('padding')
print(style.map(style_name))
print('map')
root.mainloop()
С использованием dictionaries
:
import tkinter as tk
root = tk.Tk()
label_kwargs = {'border' : 1,
'width' : 60,
'font' : ['Helvetica',10,'bold','italic'],
'borderwidth' : 3,
'relief' : "ridge"}
for i in range(10):
i = tk.Label(root, text=f'{i}',**label_kwargs)
i.pack()
root.mainloop()