[英]How to input/use float through Entry box tkinter Python?
我正在尝试了解 tkinter,所以我创建了小型 GUI python 来输入 2 个数字并使用他们的tk.Entry()
框输入数字并找到两者的总和。 但是我没有更新浮点数并生成它们的总和。 任何人都可以帮助添加一些组件以使其工作吗? 当我生成结果时,它只显示 0,这是变量的初始值。
import tkinter as tk
from tkinter import *
root = tk.Tk()
root.title("Shear and Moment Diagram Calculator")
operator=""
canvas = tk.Canvas(root, height=400,width=500,bg="White")
canvas.pack()
frame=tk.Frame(root, bg="Light Blue")
frame.place(relwidth=0.9,relheight=0.9, relx=0.05, rely=0.05)
num1 = float()
num2 = float()
tk.Label(frame, font =("Helvetica", 20),
text="Number 1:" ).grid(row=0)
tk.Label(frame, font =("Helvetica", 20),
text="Number 2:" ).grid(row=1,column=0)
num1= tk.Entry(frame, textvariable = num1 ).grid(row=0, column = 1)
num2= tk.Entry(frame, textvariable = num2 ).grid(row=1, column = 1)
def generate():
num3= num1 + num2
print(num3)
generate=tk.Button(frame, text="result", height="2", width="10",
fg="Black", bg="yellow", command = generate )
generate.grid(row=2, column=2)
mainloop()
textvariable
需要tk.StringVar()
, tk.IntVar()
或tk.DoubleVar()
使用StringVar()
您可以使用float()
转换值,计算总和并将其放回分配给Label()
或Entry()
的其他StringVar()
) 中。 如果值不正确,您还可以显示文本"Error"
。
import tkinter as tk
# --- functions ---
def generate():
try:
result = float(num1.get()) + float(num2.get())
except Exception as ex:
print(ex)
result = 'error'
num3.set(result)
# --- main ---
root = tk.Tk()
num1 = tk.StringVar()
num2 = tk.StringVar()
num3 = tk.StringVar()
tk.Label(root, text="Number 1:").grid(row=0, column=0)
tk.Label(root, text="Number 2:").grid(row=1, column=0)
tk.Label(root, text="Result:").grid(row=2, column=0)
tk.Entry(root, textvariable=num1).grid(row=0, column=1)
tk.Entry(root, textvariable=num2).grid(row=1, column=1)
tk.Entry(root, textvariable=num3).grid(row=2, column=1)
button = tk.Button(root, text="Calculate", command=generate)
button.grid(row=3, column=1)
root.mainloop()
您可以将StringVar()
用于 textvariable 以接受浮点数字字符串,然后使用generate
函数内的float()
将它们转换为浮点数。
import tkinter as tk
root = tk.Tk()
root.title("Shear and Moment Diagram Calculator")
operator=""
canvas = tk.Canvas(root, height=400, width=500, bg="White")
canvas.pack()
frame=tk.Frame(root, bg="Light Blue")
frame.place(relwidth=0.9, relheight=0.9, relx=0.05, rely=0.05)
tk.Label(frame, font=("Helvetica", 20), text="Number 1:").grid(row=0)
tk.Label(frame, font=("Helvetica", 20), text="Number 2:").grid(row=1,column=0)
# define entry variables
n1 = tk.StringVar()
n2 = tk.StringVar()
# assign the StringVar to the entry widget textvariables
num1= tk.Entry(frame, textvariable=n1)
num1.grid(row=0, column=1)
num2= tk.Entry(frame, textvariable=n2)
num2.grid(row=1, column=1)
def generate():
# get the entered value from the entry field and convert it to float and then add
num3 = float(n1.get()) + float(n2.get())
print(num3)
generate=tk.Button(frame, text="result", height="2", width="10", fg="Black", bg="yellow", command=generate )
generate.grid(row=2, column=2)
root.mainloop()
这是 GUI 和浮点数相加的结果:
您也可以使用
DoubleVar()
来完成此任务。
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.