Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter文本的连续检查_Python_Loops_Tkinter - Fatal编程技术网

Python 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

我用Tkinter设置了一个简单的界面。我有一个下拉框,这是不相关的。我还有两个输入小部件框。我希望第二个框初始化为禁用,但在第一个框中输入任何文本后,我希望第二个框变为激活状态。由于某些原因,在第一个框中输入文本时,我的第二个框不会激活。任何帮助都会很好。谢谢

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工具包来说有些独特的特性;这是其中之一。“这是一个非常强大的结构,”布莱亚诺克利说,它工作得很好。我不知道文本变量选项。非常感谢你!