通过单击单选按钮禁用输入字段

时间:2020-09-03 09:05:22

标签: python tkinter

我正在尝试学习如何单击一个单选按钮,该按钮将在输入字段中被禁用,反之亦然。我似乎无法弄清楚我在做什么错。我认为if-elif语句会起作用,但是没有运气。任何建议将不胜感激。

附上是我的代码的简化版本。

from tkinter import *

def foo():
    return v.get()

root = Tk()
root.geometry('800x600')

v = StringVar()
v.set('T-xy')

Radiobutton(root,text='P-xy',variable=v,value='P-xy',command=foo).pack()
Radiobutton(root,text='T-xy',variable=v,value='T-xy',command=foo).pack()

if foo() == 'P-xy':
    Entry1 = Entry(root,state=DISABLED).pack()
    Entry2 = Entry(root).pack()
elif foo() == 'T-xy':
    Entry1 = Entry(root).pack()
    Entry2 = Entry(root,state=DISABLED).pack() 
    
root.mainloop()

1 个答案:

答案 0 :(得分:1)

您需要先创建条目,然后在foo()函数中执行条目的启用/禁用操作:

from tkinter import *

def foo():
    val = v.get()
    Entry1.config(state=NORMAL if val == 'T-xy' else DISABLED)
    Entry2.config(state=NORMAL if val == 'P-xy' else DISABLED)

root = Tk()
root.geometry('800x600')

v = StringVar()
v.set('T-xy')

Radiobutton(root,text='P-xy',variable=v,value='P-xy',command=foo).pack()
Radiobutton(root,text='T-xy',variable=v,value='T-xy',command=foo).pack()

Entry1 = Entry(root)
Entry1.pack()

Entry2 = Entry(root,state=DISABLED)
Entry2.pack()
    
root.mainloop()