Python 如何使用tkinter根据复选框禁用条目?

Python 如何使用tkinter根据复选框禁用条目?,python,checkbox,tkinter,Python,Checkbox,Tkinter,我正在使用Python中的tkinter创建GUI。我希望用户能够给出一个最大值和最小值,如果它是一个常量,则只输入该值。我希望通过实现一个复选框,他们可以勾选,然后最大值框变灰。下面是我的代码 from tkinter import * class GUI(object): def __init__(self, master): self.master = master master.title("Variabelen") Label(

我正在使用Python中的tkinter创建GUI。我希望用户能够给出一个最大值和最小值,如果它是一个常量,则只输入该值。我希望通过实现一个复选框,他们可以勾选,然后最大值框变灰。下面是我的代码

from tkinter import *

class GUI(object):
    def __init__(self, master):
        self.master = master
        master.title("Variabelen")
        Label(master, text="Min").grid(row=0, column=1)
        Label(master, text="Max").grid(row=0, column=2)
        Label(master, text="Vaste waarde").grid(row=0, column=3)

        Label(master, text="Oppervlakte chiller").grid(row=1)
        Label(master, text="Diameter buizen").grid(row=2)

        aChillerMin = Entry(master)
        aChillerMax = Entry(master)
        dMin = Entry(master)
        dMax = Entry(master)

        aChillerMin.grid(row=1, column=1)
        aChillerMax.grid(row=1, column=2)
        aChillerVast = IntVar()
        chk = Checkbutton(root, variable=aChillerVast).grid(row = 1, column = 3)

        if aChillerVast.get():
           aChillerMax.config(state=DISABLED)

        dMin.grid(row=2, column=1)
        dMax.grid(row=2, column=2)

root = Tk()
myGUI = GUI(root)
root.mainloop()

因此,当checkbutton为True时,您想要禁用该条目,否则,请禁用它(如果不是,请在注释中更正我)。为此,在checkbutton小部件中给出一个命令

这就是你如何做到的:

from tkinter import *

class GUI(object):
    def __init__(self, master):
        self.master = master
        master.title("Variabelen")
        Label(master, text="Min").grid(row=0, column=1)
        Label(master, text="Max").grid(row=0, column=2)
        Label(master, text="Vaste waarde").grid(row=0, column=3)

        Label(master, text="Oppervlakte chiller").grid(row=1)
        Label(master, text="Diameter buizen").grid(row=2)

        aChillerMin = Entry(master)
        aChillerMax = Entry(master)
        dMin = Entry(master)
        dMax = Entry(master)

        aChillerMin.grid(row=1, column=1)
        aChillerMax.grid(row=1, column=2)
        aChillerVast = IntVar()

        def activateCheck():
            if aChillerVast.get() == 1:          #whenever checked
                aChillerMax.config(state=NORMAL)
            elif aChillerVast.get() == 0:        #whenever unchecked
                aChillerMax.config(state=DISABLED)

        chk = Checkbutton(root, variable=aChillerVast, command=activateCheck).grid(row = 1, column = 3)    #command is given

        aChillerMax.config(state=DISABLED)

        dMin.grid(row=2, column=1)
        dMax.grid(row=2, column=2)

root = Tk()
myGUI = GUI(root)
root.mainloop()

希望这有帮助

你的问题不清楚谢谢这几乎就是我要找的!只是,反过来。因此,当复选框=true时,文本框变为灰色。我想,当我在if/elif语句中切换1和0并删除aChillerMax.config(state=DISABLED)时,它起作用了。对于任何想知道的人