Python Tkinter文本的连续检查
我用Tkinter设置了一个简单的界面。我有一个下拉框,这是不相关的。我还有两个输入小部件框。我希望第二个框初始化为禁用,但在第一个框中输入任何文本后,我希望第二个框变为激活状态。由于某些原因,在第一个框中输入文本时,我的第二个框不会激活。任何帮助都会很好。谢谢Python Tkinter文本的连续检查,python,loops,tkinter,Python,Loops,Tkinter,我用Tkinter设置了一个简单的界面。我有一个下拉框,这是不相关的。我还有两个输入小部件框。我希望第二个框初始化为禁用,但在第一个框中输入任何文本后,我希望第二个框变为激活状态。由于某些原因,在第一个框中输入文本时,我的第二个框不会激活。任何帮助都会很好。谢谢 from Tkinter import * import tkMessageBox import os if __name__ == "__main__": root = Tk() root.title("ShotB
from Tkinter import *
import tkMessageBox
import os
if __name__ == "__main__":
root = Tk()
root.title("ShotBot")
root["padx"] = 40
root["pady"] = 20
root.geometry('500x200-400+200')
root.resizable(FALSE,FALSE)
textFrame = Frame(root)
#Create and place Option List
var=StringVar()
choices = ['a','b','c']
var.set(choices[0])
entryWidget = OptionMenu(root, var, *choices)
entryWidget["width"] = 30
entryWidget.pack(side="top")
#Create and Place Text Field
entryWidget2= Entry(textFrame)
entryWidget2["width"] = 30
entryWidget2.pack(side="top")
#Create and Place Text Field
entryWidget3 = Entry(textFrame)
entryWidget3["width"] = 30
entryWidget3.pack(side="top")
textFrame.pack()
button = Button(root, text="Submit")
button.pack()
if entryWidget2.get().strip()=="":
entryWidget3["state"]=DISABLED
else:
entryWidget3["state"]=NORMAL
root.mainloop()
最简单的方法是为第一个条目小部件的
textvariable
选项分配一个值,在变量上放置一个跟踪,然后根据变量的当前值启用或禁用另一个小部件。大概是这样的:
#Create and Place Text Field
def on_variable_trace(*args):
if entryVariable2.get() == "":
entryWidget3.configure(state="disable")
else:
entryWidget3.configure(state="normal")
entryVariable2 = StringVar()
entryWidget2= Entry(textFrame, textvariable=entryVariable2)
entryWidget2["width"] = 30
entryWidget2.pack(side="top")
entryVariable2.trace("w", on_variable_trace)
我对你的回答很好奇。我对这个
trace()
方法一点也不熟悉。您能将我链接到API吗?@acattle:variables上的trace方法允许您在访问Tkinter变量(读、写或删除)时设置回调。在此处读取变量跟踪:。Tkinter有几个对于GUI工具包来说有些独特的特性;这是其中之一。“这是一个非常强大的结构,”布莱亚诺克利说,它工作得很好。我不知道文本变量选项。非常感谢你!