2016-12-20 1 views
-1
from Tkinter import * 

top=Tk() 

첫 번째 값 A의 결과를 출력하는 사용자의 의지를 입력 사용자는는 엔트리 (Tkinter의)로부터 값을 얻는 방법, 식을 사용하여 라벨

를 입력

A = Entry(top) 
A.grid(row=1, column=1) 

번째 값 B

B = Entry(top) 
B.grid(row=1, column=2) 

계산 - 지금은 그 값 (소수점으로 바람직 값)

A1=float(A.get()) 
B1=float(B.get()) 
C1=A1+B1 
를 추가 할

결과 - 나는 파이썬이 결과를 계산하고 I에 유래에 오신 것을 환영합니다 좋은 처음 두 값

C = Label(textvariable=C1) 
C.grid(row=1, column=3) 


top.mainloop() 
+0

무엇이 질문입니까? 누락 된 것은 계산을 시작하는 버튼입니다. –

+0

내가 너무 버튼으로 시도,하지만 난 –

+0

@BryanOakley을 (떠 문자열을 변환 할 수 없습니다) 같은 오류가 다음은 Tkinter를 가져 오기 *' '최고 = TK에()' 에서 내 코드 '이다 'A = 엔트리 (위)'' A.grid (= 1 행, 열 = 1)'' B = 입력 (위)'' B.grid (= 1 행, 열 = 2)' 'C1 = StringVar()' 'def x() :' 'A1 = float (A.get())' 'B1 = float (B.get())',210 'C1 = A1 + B1' 'C = 레이블 (하면 textVariable = C1)' 'C.grid (행 = 1, 칼럼 = 3) ' 가'= 시작 버튼 (명령 = 용 X)' ' start.grid (row = 2, column = 1, sticky = E + W)' top.mainloop() –

답변

1

첫째는,으로 일자리 코드는 (대부분) 모든 것을 당신이 그것을 원하지 않는 입력 할 때 사용자에게 보여주고 싶은 해야 할 것! 타이밍은 단지 오프 - 당신이 개체를 만들고 값을 얻을 수 있지만 값은 사용자가 아직 입력하지 않았습니다.

는 그것을 해결하기 위해, 당신은 함수에 .get() 년대를 둘 필요가, 당신은 당신이 단지 C1 = (플로트)를 사용하는 경우가 set() 후에는 각각 (, 당신은거야 실제 텍스트 변수를 사용한다 레이블이 올바른 것을 가리키지 않도록 새로운 수레가 만들어 짐).

(setup...) 
B.grid(...) 
C1 = Tkinter.StringVar() 
C = Label(textvariable=C1) # Using a StringVar will allow this to automagically update 

def setC(): 
    A1=float(A.get()) 
    B1=float(B.get()) 
    C1.set(str(A1+B1)) 

또한이 기능을 "프로그램 실행 즉시"이상으로 설정해야합니다. 이 작업을 수행하는 간단한 방법은 함수 호출 자체를 .after() (밀리 초 단위)으로 호출하는 것입니다.

def setC(): 
    # Body above 
    top.after(1000, setC) # Call setC after 1 second, so it keeps getting called. 

setC() # You have to call it manually once, and then it repeats. 

업데이트하는 약간 더 고급하고 효율적인 방법은 이벤트와 바인딩 (A1 또는 B1이 변경 될 때마다 화재 setC() 바인딩) 포함,하지만의 작성자는 내가 당신에게 줄 것이다 긴 그 팁과 그 일부에 documentation로 보냅니다. (Effbot은 관계없이 좋은 tkinter 문서 임)

+0

너무 빨리 답변 해 주셔서 감사합니다. 말씀 드렸듯이 "ValueError : 문자열을 부동으로 변환 할 수 없습니다 :" –

+0

아, 원래 코드를 사용하면 이미 그것을 얻고있다. (파이썬은 빈 문자열을 float로 변환 할 수 없다.) 해결 방법은'setC()'가 실행되기 전에) 부동 소수로 변환되기 전에 항목에 값을'.insert() '삽입하는 것입니다. – Delioth

+0

'StringVar'을 사용할 수는 있지만 꼭 필요한 것은 아닙니다. 항목이 없으면 항목의 값을 가져 오거나 설정할 수 있습니다. –

관련 문제