2016-09-23 1 views
0

GUI에서 모든 항목 및 레이블을 만드는 방법에 대한 아이디어는 공백으로 시작하지만 계산 기능이 수행 될 때 업데이트됩니까? 그들은 현재 0부터 시작합니다. 많은 것을 시도했지만 아무 것도 효과가 없습니다. 여기라벨 및 입력 시작을 공백으로 만드는 방법

코드입니다 :

from tkinter import * 

root = Tk(className="Page Calculator") 
root.title("PgCalc") 
read = IntVar() 
total = IntVar() 
left = IntVar() 
percent = IntVar() 

def calculate(event=None): 
    try: 
     left.set(total.get() - read.get()) 
     percent.set(int(read.get()*100/total.get())) 
    except ZeroDivisionError: 
     print("ZeroDivisionError") 
    else: 
     print() 

root.bind('<Return>', calculate) 

read_label = Label(root,text="Pages Read:") 
read_label.grid(column=1, row=1) 

read_entry = Entry(root, width=8, textvariable=read) 
read_entry.grid(column=2, row=1) 
read_entry.focus() 

total_label = Label(root,text="Total Pages:") 
total_label.grid(column=1, row=2) 

total_entry = Entry(root, width=8, textvariable=total) 
total_entry.grid(column=2, row=2) 


calculate_button = Button(root,text="Calculate",command= calculate) 
calculate_button.grid(column=2, row=3) 

percent_label = Label(root,text="Percent Finished:") 
percent_label.grid(column=1, row=4) 

left_label = Label(root,text="Pages Left:") 
left_label.grid(column=1, row=5) 

percentresult_label = Label(root,textvariable=percent) 
percentresult_label.grid(column=2, row=4) 

leftresult_label = Label(root,textvariable=left) 
leftresult_label.grid(column=2, row=5) 

root.mainloop() 

답변

1

IntVar() 그들이으로 intVar를 비록, 당신은 자신의 값으로 set 문자열 (주 수를 0의 기본값은 get 그 값을하려고 할 때, 당신은거야 그 문자열이 여전히 포함되어 있으면 오류가 발생 함).

그래서 당신은 단순히

read = IntVar() 
read.set("") 

을 수행 할 수 있습니다, 당신이 항목을 사용하고 있기 때문에, 당신은 전혀으로 intVar 필요하지 않습니다. 엔트리의 값을 직접 가져 와서 정수로 캐스팅 할 수 있습니다.

def calculate(event=None): 
    try: 
     leftresult_label.config(text=str(int(total_entry.get()) - int(read_entry.get()))) 
    except ValueError: 
     print("Please enter a number") 

#You need to remove textvariables from entries as well like below 
total_entry = Entry(root, width=8) 
관련 문제