我无法弄清楚这一点。我想将两个条目相加,然后将总和放在一个标签中,没有任何按钮。 在我的第一个例子中,我只有一个条目,它完美地工作,并在键入时更新标签。
在我的第一个例子中,我有两个条目,我试图将两个条目都传递到标签中(不起作用)。
在我的第三个例子中,我试图将结果放在一个列表中,然后将它们相加,然后尝试将结果传递给标签,并且该剂量也可以。
我不明白我如何将一个条目传递给标签,但我不能将两个条目添加到一起!
怎么做??
示例一(一个条目):
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()
答案 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()