Python Tkinter StringVar 问题
Python Tkinter StringVar issues
我正在尝试为我作为随机项目玩的游戏制作一个简单的计算器。我发现自己对如何去做这件事很困惑;我希望用户在文本框中输入一个数字,它会将该数字乘以 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()
您需要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)
如果输入的值无法转换为 int
,这将另外使用 0
。
我正在尝试为我作为随机项目玩的游戏制作一个简单的计算器。我发现自己对如何去做这件事很困惑;我希望用户在文本框中输入一个数字,它会将该数字乘以 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()
您需要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)
如果输入的值无法转换为 int
,这将另外使用 0
。