如何使标签和条目开始空白



关于如何使所有的条目和标签在我的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()

IntVar()的默认值为0。即使他们是IntVar,你可以set字符串作为他们的值(注意,当你试图get它的值,你会得到一个错误,如果他们仍然包含字符串)。

所以你可以直接输入

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

但是,由于您使用的是Entry,因此根本不需要任何IntVar。您可以直接获取entry的值并将其强制转换为整数。

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)

最新更新