2014-09-07 2 views
0

내 코드는 다음과 같습니다.Python Tkinter 하나의 변수에 저장된 여러 항목 위젯에서 입력을받는 방법

from tkinter import * 
def TakeInput(): 
    print(tb.get()) #This will print Entry1 input 
    print(tb.get()) #This will print Entry2 input 
tk=Tk() 
#Entry 1 
tb=Entry(tk) #Both Entry1 and Entry2 are stored in the same variable: tb 
tb.pack() 
#Entry 2 
tb=Entry(tk) #Both Entry1 and Entry2 are stored in the same variable: tb 
tb.pack() 
#Button 
b=Button(tk,text="PrintInput",command= TakeInput) 
b.pack() 
tk.mainloop() 

내가하려고하는 일은 입력 변수 1과 입력 변수 2가 모두 같은 변수에 할당되어있을 때 표시하는 것입니다.

저는 파이썬 초보자입니다.

+0

편집 코드가 도움이되지 않습니다. 내 대답을 편집하십시오. – TidB

답변

2

그들을 통해 항목 및 루프를 포함하는 목록을 만듭니다. 버전에서

def print_input(*args): 
    for entry in entries: 
     print(entry.get()) 

entries = [Entry(tk) for _ in range(2)] 
for entry in entries: 
    entry.pack() 

btn = Button(tk, text="Print", command=print_input) 

, 당신은 다른, 처음에 하나 개의 항목에 tb을 할당하고 있습니다. 하나의 변수에 여러 위젯의 입력을 저장하는 방법이 아닙니다. 생성하고 저장 한 첫 번째 위젯에 대한 참조를 덮어 쓰는 것입니다.

+0

2 개의 입력 가젯은 입력 할 때 동일한 텍스트가 없어야합니다. 나는 textvariable이 거기에 존재해서는 안된다고 생각한다. 내가 원하는 것은 TB, tb2, tb3, tb4, ..., tbn에 할당하지 않고 모든 입력 가젯을 변수 tb에 저장하고 별도로 입력을 얻는 것입니다. 실제 프로그램에서 루프를 사용하여 항목 가젯을 만들고 단추를 클릭하여 입력 가젯 각각에 대한 입력 텍스트를 얻으므로이를 원합니다. – user3737449

+0

보다 쉽습니다. 목록에 추가하고 모든 요소를 ​​반복합니다. – TidB

+0

잘 작동합니다. 도와 주셔서 정말로 고맙습니다. – user3737449

1

자동으로 처리하려면 입력 위젯에서 문자열을 수정해야합니다. StringVar으로 할 수 있습니다. entry1의 텍스트가 entry2의 텍스트와 같을 때 버튼이 필요 없으면 자동으로 인쇄됩니다. 당신이 버튼을 눌러을 함께하고 싶어

from tkinter import * 

def TakeInput(): 
    print(tb1.get()) 
    print(tb2.get()) 

def on_entry1_changed(*args): 
    if sv_entry1.get() == sv_entry2.get(): 
     TakeInput() 

def on_entry2_changed(*args): 
    if sv_entry1.get() == sv_entry2.get(): 
     TakeInput() 
tk=Tk() 

#Entry 1 
sv_entry1 = StringVar() 
sv_entry1.set("Entry1 text") 
sv_entry1.trace("w", on_entry1_changed) 

tb1=Entry(tk, textvariable=sv_entry1) 
tb1.pack() 

#Entry 2 
sv_entry2 = StringVar() 
sv_entry2.set("Entry2 text") 
sv_entry2.trace("w", on_entry2_changed) 

tb2=Entry(tk, textvariable=sv_entry2) 
tb2.pack() 

tk.mainloop() 

, 당신은 다음과 같이 TakeInput 기능을 수정해야합니다 :

from tkinter import * 
def TakeInput(): 
    if tb1.get() == tb2.get(): 
     print tb1.get() 
tk=Tk() 

#Entry 1 
tb1=Entry(tk) 
tb1.pack() 

#Entry 2 
tb2=Entry(tk) 
tb2.pack() 

#Button 
b=Button(tk,text="PrintInput",command= TakeInput) 
b.pack() 
tk.mainloop() 
+0

응답 주셔서 감사하지만 동일한 변수에 저장된 항목 가젯이 필요하며 버튼을 누르면 입력 내용이 인쇄됩니다. – user3737449

+0

왜 동일한 위젯에 항목 위젯을 저장해야합니까? 두 번째 코드는 작업을 수행합니다. 동등 할 때 인쇄합니다. – isamert

관련 문제