Python tkinter通过单选按钮进入控件状态切换
一个简单的问题(对于像我这样的tkinter newby不是那么简单):我正在构建一个GUI,我想要两个单选按钮来驱动状态(启用或禁用)一个Entry小部件,用户将输入数据。当第一个单选按钮被按下时,我想要禁用条目;当按下第二个单选按钮时,我希望禁用条目。Python tkinter通过单选按钮进入控件状态切换
这里是我的代码:
from Tkinter import * root = Tk()
frame = Frame(root)
#callbacks
def enableEntry():
entry.configure(state=ENABLED)
entry.update()
def disableEntry():
entry.configure(state=DISABLED)
entry.update()
#GUI widgets
entry = Entry(frame, width=80)
entry.pack(side='right')
var = StringVar()
disableEntryRadioButton = Radiobutton(frame, text="Disable", variable=var, value="0", command=disableEntry)
disableEntryRadioButton.pack(anchor=W)
enableEntryRadioButton = Radiobutton(frame, text="Enable", variable=var, value="1", command=enableEntry)
enableEntryRadioButton.pack(anchor=W)
我的想法是当按下每个单选按钮来调用适当的回调。但我不确定它实际上发生在我写的代码中,因为当我选择无线电时,Entry的状态不会被切换。
我在哪里错了?
回答:
你的程序有一些问题,但总体结构是确定的。
- 您不打电话
root.mainloop()
。这对于事件循环来说是必要的,以便服务诸如按钮点击等事件。 - 您使用
ENABLED
和DISABLED
,但不要在任何地方定义或导入这些事件。我个人更喜欢使用字符串值"normal"
和"disabled"
。 - 你是不是打包你的主要部件
frame
当我解决这三样东西你的代码工作正常。这里的工作代码:
from Tkinter import * root = Tk()
frame = Frame(root)
frame.pack()
#callbacks
def enableEntry():
entry.configure(state="normal")
entry.update()
def disableEntry():
entry.configure(state="disabled")
entry.update()
#GUI widgets
entry = Entry(frame, width=80)
entry.pack(side='right')
var = StringVar()
disableEntryRadioButton = Radiobutton(frame, text="Disable", variable=var, value="0", command=disableEntry)
disableEntryRadioButton.pack(anchor=W)
enableEntryRadioButton = Radiobutton(frame, text="Enable", variable=var, value="1", command=enableEntry)
enableEntryRadioButton.pack(anchor=W)
root.mainloop()
以上是 Python tkinter通过单选按钮进入控件状态切换 的全部内容, 来源链接: utcz.com/qa/260343.html