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的状态不会被切换。

我在哪里错了?

回答:

你的程序有一些问题,但总体结构是确定的。

  1. 您不打电话root.mainloop()。这对于事件循环来说是必要的,以便服务诸如按钮点击等事件。
  2. 您使用ENABLEDDISABLED,但不要在任何地方定义或导入这些事件。我个人更喜欢使用字符串值"normal""disabled"
  3. 你是不是打包你的主要部件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

回到顶部