如何使标签和输入开始为空白

时间:2016-09-23 06:10:56

标签: python tkinter label tkinter-entry

关于如何在我的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 个答案:

答案 0 :(得分:1)

IntVar()的默认值为0.即使它们是IntVar,您也可以set字符串作为其值(请注意,当您尝试get其值时,您将会如果它们仍然包含字符串,则会收到错误)。

所以你可以简单地做

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

但是,由于您使用的是Entry,因此根本不需要任何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)