Tkcalendar настроить виджет DateEntry - PullRequest
0 голосов
/ 06 января 2020

Есть ли способ настроить сам виджет DateEntry, как если бы вы использовали обычный виджет ввода (не выпадающий календарь)? Например, измените шрифт, рельеф или фон и т. Д. c ...

Я пробовал следующее:

myDateEntry.config(background='red')

, но я просто получаю:

AttributeError: у объекта 'DateEntry' нет атрибута 'background'

Когда я определяю виджет DateEntry, я могу сделать следующее:

myDateEntry=DateEntry(root,background='red')

, что не вызывает ошибка, но только меняет фон раскрывающегося календаря.

1 Ответ

2 голосов
/ 06 января 2020

Виджет DateEntry основан на ttk.Entry, а не tk.Entry, поэтому вы должны использовать стиль, чтобы изменить его внешний вид. Это объясняется в документации: https://tkcalendar.readthedocs.io/en/stable/howtos.html#widget -stling

Как и для ttk.Entry, если вы хотите красный фон, вам нужно установить опцию стиля fieldbackground стиля на «красный», за исключением того, что стиль для изменения - «DateEntry» вместо «TEntry»:

import tkinter as tk
from tkinter import ttk
from tkcalendar import DateEntry

root = tk.Tk()
style = ttk.Style(root)
# create custom DateEntry style with red background
style.configure('my.DateEntry', fieldbackground='red')
# create DateEntry using the custom style
dateentry = DateEntry(root, style='my.DateEntry') 
dateentry.pack()

root.mainloop()

Примечание: Не все темы ttk позволяют изменять fieldbackground виджеты, особенно тема Windows по умолчанию. Чтобы иметь возможность изменить его, необходимо сначала изменить тему с помощью style.theme_use('clam'), чтобы использовать, например, тему 'clam'.

...