Python Tkinter StringVar问题

时间:2015-04-14 20:56:24

标签: python tkinter

我正在尝试为我作为随机项目玩的游戏制作一个简单的计算器。我发现自己对如何做到这一点非常困惑;我希望用户在文本框中输入一个数字,它会将该数字乘以64000,并将其显示在上面的标签中。但是,我无法在任何地方找到如何做到这一点。这只是一个小练习的事情,我很惊讶我无法弄明白。请帮帮我!这是我的代码:

from Tkinter import *

####The GUI#####
root = Tk()

#Title#
root.wm_title("TMF Coin Calculator")

####The Widgets####
a = StringVar()
b = StringVar()

def multiply_a():
    d = (int(a) * 64000)
    e = str(d)
    b.set(e)

b.trace("w", multiply_a)

#Top Label#

top_label = Label(root,  fg="red", text="Type the ammount of Coin Stacks you have.")
top_label.grid(row=0, column=0)

#The Output Label#
output_label = Label(root, textvariable=b, width = 20)
output_label.grid(row = 1, column=0)

#User Entry Box#
user_input_box = Entry(root, textvariable=a, width=30)
user_input_box.grid(row=2, column=0)

root.mainloop()

1 个答案:

答案 0 :(得分:3)

您需要trace更改的变量:a。然后你需要定义multiply_a()来处理*args的任意数量的参数(在这种情况下碰巧是3个参数,但*args在这里没问题。)

来自:

def multiply_a():
    d = (int(a) * 64000)
    e = str(d)
    b.set(e)

b.trace("w", multiply_a)

为:

def multiply_a(*args):
    try:
        myvar = int(a.get())
    except ValueError:
        myvar = 0
    b.set(myvar * 64000)

a.trace("w", multiply_a)

如果输入的值无法转换为0,则会另外使用int