在我的代码中,我试图在没有选中时禁用hi框,并在选中yes时启用它。我尝试在更改的功能中执行此操作。然而,当运行代码并检查是的框时,你好仍然没问题,当检查是的时,我只得到是:
Tkinter回调中的异常 Traceback(最近一次调用最后一次): 文件“C:\ Users \ Ahmed \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ idlelib \ run.py”,第119行,主要 seq,request = rpc.request_queue.get(block = True,timeout = 0.05) 文件“C:\ Users \ Ahmed \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ queue.py”,第172行,获取 提高空 queue.Empty
在处理上述异常期间,发生了另一个异常:
追踪(最近一次通话): 文件“C:\ Users \ Ahmed \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ tkinter__init __。py”,第1550行,调用 return self.func(* args) 文件“C:\ Users \ Ahmed \ Desktop \ no_yes.py”,第13行,已更改 c3.config(状态= ENABLE) NameError:名称'ENABLE'未定义
可能是我使用空闲而不是导入正确的东西(我没有修改或安装闲置只是普通来自python网站)但我想它的方式我尝试启用或禁用更改功能中的复选框。基本上我想知道如何在满足正确要求时启用和禁用复选框(如果没有选中则禁用,如果仅选择是则启用。)
#Import tkinter to make gui
from tkinter import *
from tkinter import ttk
def changed(*args):
value = b1.get()
value2 = b2.get()
value3 = b3.get()
print (b3.get()=="1")
if b1.get()==1:
c3.config(state=DISABLED)
elif b2.get() == "1" and (b1.get() == "1") == False:
c3.config(state=ENABLE)
elif b3.get() != "1":
result.set("")
elif b3.get() == "1":
result.set("Hi!")
#Sets title and creates gui
root = Tk()
root.title("Form")
#Configures column and row settings and sets padding
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
b1 = StringVar()
c1 = ttk.Checkbutton(mainframe, text='No',
command=changed, variable=b1)
c1.grid(column=1, row=1, sticky=(W, E))
b2 = StringVar()
c2 = ttk.Checkbutton(mainframe, text='Yes',
command=changed, variable=b2)
c2.grid(column=2, row=1, sticky=(W, E))
b3 = StringVar()
c3 = ttk.Checkbutton(mainframe, text='Hi',
command=changed, variable=b3)
c3.grid(column=2, row=2, sticky=(W, E))
result = StringVar()
ttk.Label(mainframe, textvariable=result).grid(column=1, row=2, sticky=(W))
答案 0 :(得分:0)
好的,所以禁用和启用就像这样:
button.state(['disabled']) # set the disabled flag, disabling the button
button.state(['!disabled']) # clear the disabled flag
button.instate(['disabled']) # return true if the button is disabled, else false
button.instate(['!disabled']) # return true if the button is not disabled, else false
button.instate(['!disabled'], cmd) # execute 'cmd' if the button is not disabled