Nic*_*ley 18
不,Tk不包括日期选择器小部件.您可以尝试使用几个Python日历小部件:
http://svn.python.org/projects/sandbox/trunk/ttk-gsoc/samples/ttkcalendar.py
http://effbot.org/zone/wcklib-calendar.htm
Mos*_*she 10
不是我能找到的.对于任何想要在未来这样做的人:
我使用tkSimpleDialog和ttkcalendar.py(从这个 SO帖子修改)来制作CalendarDialog.这三个文件的修改版本可以在我的github上找到.
下面是CalendarDialog.py中的代码:
import Tkinter
import ttkcalendar
import tkSimpleDialog
class CalendarDialog(tkSimpleDialog.Dialog):
"""Dialog box that displays a calendar and returns the selected date"""
def body(self, master):
self.calendar = ttkcalendar.Calendar(master)
self.calendar.pack()
def apply(self):
self.result = self.calendar.selection
# Demo code:
def main():
root = Tkinter.Tk()
root.wm_title("CalendarDialog Demo")
def onclick():
cd = CalendarDialog(root)
print cd.result
button = Tkinter.Button(root, text="Click me to see a calendar!", command=onclick)
button.pack()
root.update()
root.mainloop()
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
Gar*_*ari 10
如果有人仍然需要这个 - 这是一个使用tkcalendar包创建Calendar和DateEntry小部件的简单代码.
pip install tkcalendar [用于安装包]
try:
import tkinter as tk
from tkinter import ttk
except ImportError:
import Tkinter as tk
import ttk
from tkcalendar import Calendar, DateEntry
def example1():
def print_sel():
print(cal.selection_get())
top = tk.Toplevel(root)
cal = Calendar(top,
font="Arial 14", selectmode='day',
cursor="hand1", year=2018, month=2, day=5)
cal.pack(fill="both", expand=True)
ttk.Button(top, text="ok", command=print_sel).pack()
def example2():
top = tk.Toplevel(root)
ttk.Label(top, text='Choose date').pack(padx=10, pady=10)
cal = DateEntry(top, width=12, background='darkblue',
foreground='white', borderwidth=2)
cal.pack(padx=10, pady=10)
root = tk.Tk()
s = ttk.Style(root)
s.theme_use('clam')
ttk.Button(root, text='Calendar', command=example1).pack(padx=10, pady=10)
ttk.Button(root, text='DateEntry', command=example2).pack(padx=10, pady=10)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
小智 10
请尝试以下操作:
from tkinter import *
from tkcalendar import Calendar,DateEntry
root = Tk()
cal = DateEntry(root,width=30,bg="darkblue",fg="white",year=2010)
cal.grid()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
其中tkcalendar图书馆应下载并通过安装pip install tkcalender命令。
这里的答案提供了您所要求的大部分内容,但我觉得没有一个是完全令人满意的。作为 Tkinter 新手,我需要更多指导。我的抱怨:
因此,感谢之前对我有很大帮助的答案,这是我的版本。
def get_date():
import tkinter as tk
from tkinter import ttk
from tkcalendar import Calendar, DateEntry
def cal_done():
top.withdraw()
root.quit()
root = tk.Tk()
root.withdraw() # keep the root window from appearing
top = tk.Toplevel(root)
cal = Calendar(top,
font="Arial 14", selectmode='day',
cursor="hand1")
cal.pack(fill="both", expand=True)
ttk.Button(top, text="ok", command=cal_done).pack()
selected_date = None
root.mainloop()
return cal.selection_get()
selection = get_date()
print(selection)
Run Code Online (Sandbox Code Playgroud)
小智 5
不,但您可以从用户那里获取它作为格式化字符串中的日期时间元素。
例子:
import datetime
userdatestring = '2013-05-10'
thedate = datetime.datetime.strptime(userdatestring, '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
查看http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior。它很方便,虽然不是最用户友好的约会方式。