gpt4 book ai didi

Python tkinter Entry 小部件状态通过单选按钮切换

转载 作者:太空狗 更新时间:2023-10-30 01:03:40 25 4
gpt4 key购买 nike

一个简单的问题(对于像我这样的 tkinter 新手来说不是那么简单):我正在构建一个 GUI,我希望有两个单选按钮来驱动 Entry 小部件的状态(启用或禁用),用户将进入其中输入数据。当按下第一个单选按钮时,我希望条目被禁用;当按下第二个单选按钮时,我希望条目被禁用。

这是我的代码:

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)

我的想法是在按下每个单选按钮时调用适当的回调。但我不太确定它是否真的发生在我编写的代码中,因为当我选择 radio 时,条目的状态没有切换。

我哪里错了?

最佳答案

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

  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 Entry 小部件状态通过单选按钮切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6263226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com