我正在写,其中一部分是一个功能程序,它在 tkinter 中禁用或启用日历,具体取决于是否选中了复选框。这是我的代码到目前为止的样子:
from tkinter import *
from tkcalendar import *
class Checkbox:
def __init__(self, master):
self.checkbuttonVar = IntVar()
self.calendarLabel = Checkbutton(master, text="Set deadline:", variable=self.checkbuttonVar,
command=self.checkcheck)
self.calendarLabel.grid(row=5, column=0, pady=10, sticky=W)
self.datePick = Calendar(master, date_pattern="mm/dd/yyyy")
self.datePick.grid(row=6, column=0, columnspan=6, sticky=N + W + S + E)
def checkcheck(self):
if self.checkbuttonVar.get() == True:
self.datePick(state='disabled')
else:
print('Not check')
root = Tk()
b = Checkbox(root)
root.mainloop()
当我选中复选框时,我得到一个 TypeError: 'Calendar' object is not callable (我意识到这可能是最愚蠢的做法,但这是我第一次真正尝试做类似的事情,所以请多多包涵) . 是否有任何选项可以更改日历的状态?我带来的唯一选择是:
def checkcheck(self):
if self.checkbuttonVar.get() == True:
self.datePick = Calendar(root, date_pattern="mm/dd/yyyy")
self.datePick.grid(row=6, column=0, columnspan=6, sticky=N + W + S + E)
else:
self.datePick = Calendar(root, date_pattern="mm/dd/yyyy", state='disabled')
self.datePick.grid(row=6, column=0, columnspan=6, sticky=N + W + S + E)
它有点像它应该做的,但我对这个解决方案不满意,我可以看到每次我检查不是很好看的按钮时程序都会刷新。我将非常感谢任何建议!