2010-03-26 4 views
8

내가에서는, Tkinter를 입력 위젯과 변수를 연결하기 위해 노력하고있어 방법이 :Entry 위젯에 변수를 연결하는 방법은 무엇입니까?

나는 주로 그것으로 무언가를 입력하여 값 항목의 (이하 "컨텐츠"), 변경할 때마다
  1. , 변수에 자동으로 입력 한 값이 할당됩니다. 나에게 버튼 "푸시 값"또는 그와 비슷한 것을 먼저 푸시하지 않아도됩니다.

  2. 변수가 변경되면 (프로그램의 다른 부분에서) 표시된 항목 값이 자동으로 조정되기를 원합니다. 나는 이것이 textvariable을 통해 작동 할 수 있다고 믿는다.

나는 http://effbot.org/tkinterbook/entry.htm에 예를 읽을 수 있지만 정확히 내가 생각하고있는 것에 대해 나에게 도움이되지 않습니다. 엔트리의 "유효성 검사"를 사용하여 첫 번째 조건을 보장 할 수있는 방법이 있다고 생각합니다. 어떤 아이디어?

+2

아마도 대안을 제안 할 수 있습니까? :) –

+4

tkinter의 문제점은 무엇입니까? 파이썬 홈페이지에 따르면 파이썬의 사실상의 표준 GUI 패키지입니다. 그리고 "가장 일반적으로 사용되는 것". – Sano98

+0

제어 변수 : http://infohost.nmt.edu/tcc/help/pubs/tkinter/control-variables.html –

답변

12

나는 이런 식으로하고 싶다고 생각합니다. 아래 예에서 변수 myvar을 만들고 textvariableLabelEntry 위젯으로 할당했습니다. 이 방법은 둘 다 결합되어 Entry 위젯의 변경 사항이 Label에 자동으로 반영됩니다.

변수에 set trace을 입력 할 수도 있습니다. 예 : stdout에 쓰기.

from tkinter import * 


root = Tk() 
root.title("MyApp") 

myvar = StringVar() 

def mywarWritten(*args): 
    print "mywarWritten",myvar.get() 

myvar.trace("w", mywarWritten) 

label = Label(root, textvariable=myvar) 
label.pack() 

text_entry = Entry(root, textvariable=myvar) 
text_entry.pack() 

root.mainloop() 
+0

감사합니다, 이것이 올바른 방향으로 가고 있지만, 변수로 작업하기 위해서는, 그것들을 보통의 파이썬 변수로 변환해야합니다. 위젯이 동일한 textvariable을 공유하기 때문에 예제가 작동합니다. 예를 들어 엔트리의 내용을 tkinter 레이블로 쓰지 않고 변경 될 때마다 표준 출력에 인쇄하고 싶다면 어떻게 할 것입니까? – Sano98

+1

이렇게하면 :'text_entry.bind ('', handler)''handler'는 파이썬 변수를 할당하는 함수입니다. 내 대답을 보라. – Paul

+0

@ Sano98, 나는 편집 된 대답을 가지고 있습니다. 쉽게 읽을 수있는 변수를 추적 할 수 있습니다. –

관련 문제