2017-12-02 1 views
1

오류 코드는 다음과 같습니다. tkinter를 사용하여 문자열을 float로 변환 할 수 없습니다.

line 83, in qu2 
wins = float(wins) 
ValueError: could not convert string to float: 

이 어떤 도움에 감사드립니다 오류가

   wins = wins_box.get() 
       draws = draws_box.get() 
       loses = losses_box.get() 
       wins = float(wins) 
       draws = float(draws) 
       loses = float(loses) 
       total_score = 0 
       total_score = total_score + wins * 3 
       total_score = total_score + draws * 2 
       total_score = total_score + loses 

       yourvar = tkinter.StringVar() 
       yourvar.set(total_score) 
       totalscore1 = tkinter.Label(q3, textvariable=yourvar) 
       totalscore1.pack() 

에 표시되는 코드입니다, 감사합니다.

+2

로 값을 변환하지 않아도 그런 식으로 당신은해야''인쇄가()''당신''wins'' 변수 - 그것의 소리에서, 그것은 포함 float로 변환 할 수없는 문자열. –

+0

나는 시도해 본 결과 tkinter의 창으로 스코어를 사용하려고하는데, 평소에는 pritned되지 않았다. – Leeeaaann

+0

빈 문자열을 float로 변환하려고합니다. 이것을 디버그하는 간단한 방법은 값을 변환하기 전에 인쇄하는 것입니다. –

답변

1

문자열 ""을 (를) 플로트로 변환하려고합니다. ""는 플로트처럼 이해할 수 없으므로 다음 중 하나를 수행해야합니다.

1 필드를 부동 소수로 인식 할 수있는 문자열로 채 웁니다. 예를 들어 "0"입니다.

2 기본값을 설정하십시오. 다음 코드는 wins를 wins의 float 값 또는 적용 할 수없는 경우 0.0으로 설정합니다.

try: 
    wins = float(wins) 
except: 
    wins = 0.0 

3 0.0로 변환 ""지정

if wins == "": 
    wins = 0.0 
else: 
    wins = float(wins) 
+0

고마워요, 잠시 후에 보겠습니다. 잠시 바쁘다. – Leeeaaann

0

난 당신이 잘못된 장소에서 사용할 생각 - 당신이 Entry을 만들 직후. 그러나 Entry()input()이 아니므로 텍스트를 입력 할 때까지 기다리지 않으므로 텍스트를 입력하기 전에 Entry 이후의 모든 명령이 실행됩니다. 창을 열기 전에도 실행됩니다. Entry()tkinter에만 어떤 요소를 사용 하시겠습니까? mainloop()은 모든 작업을 수행합니다 (창 열기, 창 부품 삽입, 키/마우스 이벤트 가져 오기, 위젯 전송, 위젯 그리기 등).

import tkinter as tk 

# --- functions --- 

def callback(): 
    text = e.get() 
    try: 
     value = float(text) 
     l['text'] = 'square: ' + str(value**2) 
    except Exception as ex: 
     l['text'] = 'wrong float: ' + text 

# --- main --- 

root = tk.Tk() 

e = tk.Entry(root) 
e.pack() 

b = tk.Button(root, text='CALC SQUARE', command=callback) 
b.pack() 

l = tk.Label(root, text='here you will see result') 
l.pack() 

root.mainloop() 
+0

내가 각자 넣을 수있는 숫자를 제한 할 수있는 방법이 있습니까? – Leeeaaann

+0

당신은 엔트리에서 허용되는 데이터 필터링을 의미합니까? 모든 키 다음에 실행될 함수를 assing ('bind()') 할 수 있으며 입력시 새로운 텍스트를 검사 할 수 있으며 허용 된 문자를 삭제할 수 있습니다. 코드 https://github.com/furas/python-examples/blob/master/tkinter/entry-bind-events/example-1.py의 ''을 참조하십시오. – furas

-1

왜 당신이 사용하지 마십시오 :

예 당신은 Button에 코드 기능을 할당 할 수 있으며, (당신이 Entry에 코드를 삽입 후) 당신이 그것을 클릭 후 실행됩니다 DoubleVar?

당신이 float

>>> yourvar = tkinter.DoubleVar() 
>>> yourvar.set(5.0) 
>>> yourvar.get() 
5.0 
관련 문제