tkinter中没有按钮的两个Entry小部件的总和

时间:2018-05-25 07:40:16

标签: python tkinter

我无法弄清楚这一点。我想将两个条目相加,然后将总和放在一个标签中,没有任何按钮。 在我的第一个例子中,我只有一个条目,它完美地工作,并在键入时更新标签。

在我的第一个例子中,我有两个条目,我试图将两个条目都传递到标签中(不起作用)。

在我的第三个例子中,我试图将结果放在一个列表中,然后将它们相加,然后尝试将结果传递给标签,并且该剂量也可以。

我不明白我如何将一个条目传递给标签,但我不能将两个条目添加到一起!

怎么做??

示例一(一个条目):

from tkinter import *

root = Tk()
var = DoubleVar()
var.set(float(0.000))

t1 = Entry(root, textvariable = var)
t1.pack()


l = Label(root, textvariable = var)
l.pack()


root.mainloop()

示例二(两个条目):

from tkinter import *

root = Tk()
var1 = DoubleVar()
var1.set(float(0.100))
var2 = DoubleVar()
var2.set(float(0.200))


t1 = Entry(root, textvariable = var1)
t1.pack()
t2 = Entry(root, textvariable = var2)
t2.pack()

result = var1 + var2

l = Label(root, textvariable = result)
l.pack()


root.mainloop()

示例树(两个条目,带列表):我收到此错误,

TypeError: unsupported operand type(s) for +: 'int' and 'DoubleVar'

我该如何处理?

from tkinter import *

root = Tk()

var1 = DoubleVar()
var1.set(float(0.100))
var2 = DoubleVar()
var2.set(float(0.200))

t1 = Entry(root, textvariable = var1)
t1.pack()
t2 = Entry(root, textvariable = var2)
t2.pack()

resultList = [var1, var2]
resultSum = sum(resultList)

l = Label(root, textvariable = resultSum)
l.pack()


root.mainloop()

2 个答案:

答案 0 :(得分:0)

您需要调用.get()来获取DoubleVars的值。我目前无法访问tkinter(使用Pythonista)来测试它,但你应该可以做类似的事情:

resultList = [var1.get(), var2.get()]
resultSum = sum(resultList)

答案 1 :(得分:0)

要从Tkinter变量中获取值,您需要使用其.get方法。您可以使用Tkinter的trace机制来观察与Entry小部件相关的变量。只要Entry值发生变化,Label就会自动更新。

import tkinter as tk

root = tk.Tk()

var1 = tk.DoubleVar()
t1 = tk.Entry(root, textvariable=var1)
t1.pack()

var2 = tk.DoubleVar()
t2 = tk.Entry(root, textvariable=var2)
t2.pack()

result = tk.DoubleVar()
l = tk.Label(root, textvariable=result)
l.pack()

# Put trace callbacks on the Entry DoubleVars
def set_label(name, index, mode):
    result.set(var1.get() + var2.get())

var1.trace('w', set_label)
var2.trace('w', set_label)

# Setting the vars will trigger the trace
var1.set(0.25)
var2.set(0.5)

root.mainloop()