0

Tkinter を使用してセットアップされたシンプルなインターフェイスがあります。関係のないドロップダウン ボックスがあります。エントリ ウィジェット ボックスも 2 つあります。私がしたいのは、2番目のボックスを無効として初期化することですが、最初のボックスにテキストが入力されるとすぐに、2番目のボックスがアクティブになるようにします。何らかの理由で、テキストが最初のボックスに入力されたときに 2 番目のボックスがアクティブになりません。どんな助けでも素晴らしいでしょう。ありがとう!

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()
4

1 に答える 1

0

最も簡単な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)
于 2012-07-14T04:20:23.270 に答える