в 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 ответа

дать вам 10*4(int) памяти в куче. он не работает так же, как стековая память, это просто 10 единиц памяти в куче, но вы можете использовать ее как массив. косвенно вы обращаетесь к памяти и присваиваете ей значение.

С использованием 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()
Другие вопросы по тегам