将日期输入显示从年月日扩展到年月日?

2024-05-29 03:05:40 发布

您现在位置:Python中文网/ 问答频道 /正文

使用来自tkcalendarpython模块的dateentry,每次我在小部件上选择日期时,它都会将其缩短为m/d/yy格式。如果可能的话,我希望它能扩展到mm/dd/yyyy,或者至少在今年。在

当使用set_date方法时,它将显示输入的任何内容(字符串),但是一旦单击另一个日期,它就会恢复为缩短的格式。在

有没有办法让它总是显示完整的日期?我似乎找不到一个允许我使用%Y的格式参数,所以我问这个问题。在


Tags: 模块方法字符串内容date部件格式dd
2条回答

如果您只想更改它在选择时的显示方式,可以创建一个继承DateEntry并重写_select方法的类。在

from tkcalendar import DateEntry
import tkinter as tk

root = tk.Tk()

class CustomDateEntry(DateEntry):

    def _select(self, event=None):
        date = self._calendar.selection_get()
        if date is not None:
            self._set_text(date.strftime('%m/%d/%Y'))
            self.event_generate('<<DateEntrySelected>>')
        self._top_cal.withdraw()
        if 'readonly' not in self.state():
            self.focus_set()

entry = CustomDateEntry(root)
entry._set_text(entry._date.strftime('%m/%d/%Y'))
entry.pack()

root.mainloop()

自1.5.0版以来,无需重写_select,使用date_pattern参数(请参见documentation):

import tkinter as tk
from tkcalendar import DateEntry

window = tk.Tk()

DateEntry(window, locale='en_US', date_pattern='mm/dd/y').pack()  # custom formatting
DateEntry(window, locale='en_US').pack()  # default formatting
window.mainloop()

给予

screenshot

相关问题 更多 >

    热门问题