用python tkinter写一个日历控件
时间: 2023-06-04 14:06:36 浏览: 425
tkcalendar:Tkinter的日历小部件-开源
很好,这是一个关于编程的问题,我可以回答。您可以使用 Python tkinter 模块中的 Calendar 组件来创建一个日历控件。您可以将此组件添加到您的应用程序中,并以不同的方式自定义它。示例代码如下:
```python
import tkinter as tk
from tkinter import ttk
import calendar
class Calendar:
def __init__(self, master):
self.master = master
self.master.title("Calendar")
self.cal = calendar.Calendar()
self.year = tk.IntVar()
self.month = tk.IntVar()
self.year.set(2022)
self.month.set(6)
self.year_label = ttk.Label(self.master, text="Year:")
self.month_label = ttk.Label(self.master, text="Month:")
self.year_spinbox = tk.Spinbox(self.master, from_=1, to=9999, width=5, textvariable=self.year)
self.month_spinbox = tk.Spinbox(self.master, from_=1, to=12, width=3, textvariable=self.month)
self.year_label.grid(row=0, column=0, sticky="w")
self.month_label.grid(row=0, column=1, sticky="w")
self.year_spinbox.grid(row=1, column=0, sticky="w")
self.month_spinbox.grid(row=1, column=1, sticky="w")
self.calendar_widget = ttk.Treeview(self.master, selectmode="none", columns=("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"), show="headings")
self.calendar_widget.column("Mon", width=50, anchor="c")
self.calendar_widget.column("Tue", width=50, anchor="c")
self.calendar_widget.column("Wed", width=50, anchor="c")
self.calendar_widget.column("Thu", width=50, anchor="c")
self.calendar_widget.column("Fri", width=50, anchor="c")
self.calendar_widget.column("Sat", width=50, anchor="c")
self.calendar_widget.column("Sun", width=50, anchor="c")
self.calendar_widget.heading("Mon", text="Mon")
self.calendar_widget.heading("Tue", text="Tue")
self.calendar_widget.heading("Wed", text="Wed")
self.calendar_widget.heading("Thu", text="Thu")
self.calendar_widget.heading("Fri", text="Fri")
self.calendar_widget.heading("Sat", text="Sat")
self.calendar_widget.heading("Sun", text="Sun")
self.populate_calendar()
self.calendar_widget.grid(row=2, column=0, columnspan=2)
def populate_calendar(self):
year = self.year.get()
month = self.month.get()
month_days = self.cal.monthdayscalendar(year, month)
for i in self.calendar_widget.get_children():
self.calendar_widget.delete(i)
for date in month_days:
self.calendar_widget.insert("", tk.END, values=date)
root = tk.Tk()
app = Calendar(root)
root.mainloop()
```
此代码将创建一个包含 “年” 和 “月” 两个标签的窗口。在其中,可以选择年份和月份,然后在 “日历” 中显示该月份的日历。
希望这对您有所帮助。
阅读全文