gpt4 book ai didi

python - 如何通过输入框 tkinter Python 输入/使用 float ?

转载 作者:行者123 更新时间:2023-12-02 00:08:26 24 4
gpt4 key购买 nike

我正在尝试了解 tkinter,因此我创建了小型 GUI python 来输入 2 个数字并使用它们的 tk.Entry() 框输入数字并求出两者的总和。但是我没有更新 float 并生成它们的总和。任何人都可以帮助添加一些组件以使其工作吗?当我生成结果时,它只显示 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() 转换值,计算总和并将其放回分配给的其他 StringVar() Label()Entry()。如果值不正确,您还可以显示文本 "Error"

enter image description here

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()

关于python - 如何通过输入框 tkinter Python 输入/使用 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59838116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com