当我运行代码时,日历日数字与它们所对应的工作日不一致。我尝试过 justify = LEFT 和 RIGHT 和 CENTRE。即使没有 justify 语句,这些都不能解决我的问题
from tkinter import *
import calendar as cl
import datetime as datet
year = int(datet.date.today().strftime("%Y")) #year
month = int(datet.date.today().strftime("%m")) #month number
root = Tk()
root.geometry("300x300")
app = Frame(root)
app.grid()
cal = Label(app, text = cl.month(year, month), justify = RIGHT)
cal.grid(row = 0, column = 0)
root.mainloop()
最佳答案
Tkinter 默认情况下使用非等宽字体作为标签。 calendar.month(year, Month)
是一个长字符串,如果您在控制台中打印,它将按您的预期显示。将您的代码更改为如下所示:
import calendar
import datetime
from tkinter import *
year = int(datetime.date.today().strftime("%Y")) # year
month = int(datetime.date.today().strftime("%m")) # month number
root = Tk()
root.geometry("300x300")
app = Frame(root)
app.grid()
cal = Label(app, text=calendar.month(year, month), font=('Consolas', 12))
cal.grid(row=0, column=0)
root.mainloop()
Consolas 是等宽字体,还有其他选项。
请注意,如果您将日历的每个部分分解为自己的小部件,则无需更改字体即可让它们按照您的意愿对齐。
关于Python 日历对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47632664/