2012-07-14 2 views
0

Tkinter를 사용하여 간단한 인터페이스를 설정했습니다. 드롭 다운 상자가 있는데, 이는 관련이 없습니다. 또한 두 개의 입력 위젯 상자가 있습니다. 내가 원하는 것은 두 번째 것이 DISABLED로 초기화되는 것입니다. 그러나 곧 다른 텍스트가 첫 번째 상자에 입력되어 두 번째 상자가 활성화되기를 원합니다. 어떤 이유로 텍스트가 첫 번째 상자에 입력 될 때 두 번째 상자가 활성화되지 않습니다. 어떤 도움이라도 좋을 것입니다. 감사!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() 

답변

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) 
+0

나는 당신의 대답에 대해 궁금합니다. 나는이'trace()'메소드에 익숙하지 않다. 나를 API에 연결할 수 있습니까? – acattle

+1

@acattle : 변수에 대한 추적 메소드를 사용하면 Tkinter 변수에 액세스 (읽기, 쓰기 또는 삭제) 할 때마다 콜백을 설정할 수 있습니다. 변수 추적은 http://effbot.org/tkinterbook/variable.htm을 참조하십시오. Tkinter에는 GUI 툴킷에 대해 고유 한 몇 가지 기능이 있습니다. 이것은 그들 중 하나입니다. 그것은 매우 강력한 구조입니다. –

+0

@ BryanOakley 그 것이 아름답게 작동했습니다. 텍스트 변수 옵션을 알지 못했습니다. 정말 고맙습니다! – mattgarkusha