Python 无法从tkinter中的多个条目返回值
我正试图写一个简单的程序来计算密度(密度),给定空气中的质量(a),水中的质量(B)和水温(Temp)。我用tkinter做了一个gui。如果我只尝试获取一个值(ao=float(A.get()),程序就会工作。但是,当我尝试添加第二个值(bo)时,程序不再工作。当我运行density.py时,gui不再显示。这是我的代码:Python 无法从tkinter中的多个条目返回值,python,tkinter,get,Python,Tkinter,Get,我正试图写一个简单的程序来计算密度(密度),给定空气中的质量(a),水中的质量(B)和水温(Temp)。我用tkinter做了一个gui。如果我只尝试获取一个值(ao=float(A.get()),程序就会工作。但是,当我尝试添加第二个值(bo)时,程序不再工作。当我运行density.py时,gui不再显示。这是我的代码: from tkinter import * from tkinter import ttk def calculate(*args): try:
from tkinter import *
from tkinter import ttk
def calculate(*args):
try:
ao = float(A.get())
#bo = float(B.get())
#Temp1 = float(Temp.get())
Dens.set((ao / (ao - 2)))
except ValueError:
pass
root = Tk()
root.title("Density Calculation")
mainframe = ttk.Frame(root, padding="5 10")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
A = StringVar()
B = StringVar()
Temp = StringVar()
Dens = StringVar()
A_entry = ttk.Entry(mainframe, width=7, textvariable=A)
A_entry.grid(column=1, row=1, sticky=(W, E))
B_entry = ttk.Entry(mainframe, width=7, textvariable=B)
B_entry.grid(column=1, row=2, sticky=(W, E))
Temp_entry = ttk.Entry(mainframe, width=7, textvariable=Temp)
Temp_entry.grid(column=1, row=3, sticky=(W, E))
ttk.Label(mainframe, textvariable=Dens).grid(column=2, row=4, sticky=(W, E))
ttk.Button(mainframe, text="Calculate", command=calculate).grid(column=3, row=5, sticky=W)
ttk.Label(mainframe, text="A").grid(column=2, row=1, sticky=W)
ttk.Label(mainframe, text="B").grid(column=2, row=2, sticky=W)
ttk.Label(mainframe, text="temp").grid(column=2, row=3, sticky=W)
ttk.Label(mainframe, text="density is ").grid(column=1, row=4, sticky=E)
ttk.Label(mainframe, text="g/cc").grid(column=3, row=4, sticky=W)
for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
A_entry.focus()
root.bind('<Return>', calculate)
root.mainloop()
如何让程序识别多个条目?
谢谢。在注释掉这两行之后,只要用户在三个文本框中键入三个格式正确的浮点值,您的程序就可以运行。(我试过了。)在
calculate
中使用except-ValueError:pass
code不是一个好主意。我要么在控制台上打印回溯,要么在Dens
中显示某种错误消息。这将允许您对问题进行故障排除,并为用户提供一些有关出错原因的线索。我想我真正的问题是,当我将计算函数定义为:ao=float(A.get())时,为什么代码不起作用;bo=浮动(B.get());密度集(ao/(ao-bo))?它甚至没有设置gui来允许我输入值。这毫无意义,因为你注释掉的行只有在单击后才会执行。除非显示gui,否则这不会发生。程序总是为我运行,不管行是否被注释掉。我看不出它为什么不画GUI。当您尝试运行该程序时会发生什么情况?你看到回溯了吗?你能把一些打印的语句放进去看看它在做什么吗?我不知道为什么它以前不起作用。我删除了这些行,然后重新键入完全相同的行,现在它可以工作了。算了吧。
Dens.set(ao/(ao-bo))