0

我正在使用 tkcalendar 在 tkinter 中制作日历,但是在导入 tkcalendar 时,出现此错误:

ImportError:无法从部分初始化的模块“tkcalendar”导入名称“日历”(很可能是由于循环导入)

我尝试查看循环导入错误的其他堆栈溢出答案,但无法解决问题。我尝试在定义函数“显示”之前而不是在开始时从 tkcalendar 导入日历,但这也没有解决问题。

tkcalendar 的位置:

C:\Users\Vansh\AppData\Roaming\Python\Python38\site-packages

我的代码:

from tkinter import *
from tkcalendar import Calendar
from PIL import ImageTk,Image

x=Tk()

#Widget Size, Color, Title
x.geometry("400x400")
x.minsize(400,400)
x.maxsize(500,500)
x["bg"]="#222222"
x.title("Calendar")

#Title Label
l_title=Label(x,text="Calendar")
l_title["fg"]="white"
l_title["bg"]="#222222"
l_title["font"]=("Times New Roman",25,"bold")
l_title.place(x=125,y=20)

#Calendar Image Label
calendar_img=ImageTk.PhotoImage(Image.open("images/calendar.png"))
l_calendar_img=Label(x)
l_calendar_img["bg"]="#222222"
l_calendar_img["width"]=60
l_calendar_img["height"]=60
l_calendar_img["borderwidth"]=0
l_calendar_img.place(x=165,y=65)

#Month Label
l_month=Label(x,text="Month")
l_month["bg"]="#222222"
l_month["fg"]="#aef359"
l_month["font"]=("Arial",14)
l_month.place(x=30,y=147)

#Month Spinbox
sb_month=Spinbox(x, from_=1,to=12)
sb_month["bg"]="#111111"
sb_month["fg"]="white"
sb_month["width"]=5
sb_month["font"]=("Times New Roman",12)
sb_month.place(x=100,y=150)

#Year Label
l_year=Label(x,text="Year")
l_year["bg"]="#222222"
l_year["fg"]="#aef359"
l_year["font"]=("Arial",14)
l_year.place(x=225,y=147)

#Year Spinbox
sb_year=Spinbox(x, from_=1990,to=2030)
sb_year["bg"]="#111111"
sb_year["fg"]="white"
sb_year["width"]=7
sb_year["font"]=("Times New Roman",12)
sb_year.place(x=280,y=150)

#Display function
def display():
    month=sb_month.get()
    year=sb_year.get()
    cal=Calendar(x,year=year,month=month)
    cal.place(x=200,y=300)

#Show Calendar Button
b_show=Button(x,text="Show Calendar")
b_show["bg"]="#ff6700"
b_show["fg"]="white"
b_show["activebackground"]="#aef359"
b_show["activeforeground"]="white"
b_show["borderwidth"]=0
b_show["font"]=("Arial",9,"bold")
b_show["command"]=display
b_show.place(x=150,y=190)

x.mainloop()
4

0 回答 0