我需要根据Tkinter中选中的复选框更改日历的状态

2024-09-30 02:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写,其中一部分是一个函数程序,它在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”对象是不可调用的(我意识到这可能是最愚蠢的方法,但这是我第一次真正尝试这样做,所以请容忍我)。是否有更改日历状态的选项?我唯一的选择是:

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)

它有点像它应该做的,但我不满意这个解决方案,我可以看到程序刷新每次我检查按钮,这不是很好看。我将非常感谢任何建议


Tags: selfmasterdatedefcolumnrootcalendargrid
1条回答
网友
1楼 · 发布于 2024-09-30 02:17:20

我是个白痴,我要做的就是:

def checkcheck(self):
    if self.checkbuttonVar.get() != True:
        self.datePick.configure(state="disabled")
    else:
        self.datePick.configure(state="normal")

它的工作原理与预期一致

相关问题 更多 >

    热门问题