【问题标题】:Add and get the sum off floats from entry in label [duplicate]从标签中的条目添加并获取浮点数的总和[重复]
【发布时间】:2018-05-23 21:37:24
【问题描述】:

我有一个菜鸟问题。

我想从 3 个条目中添加浮点数,所以总浮点数显示在标签中。

我的解决方案是这样,但我无法让它工作,我做错了什么?

提前谢谢..

from tkinter import *

class App(Frame):
    def __init__(self, root=None):
        Frame.__init__(self, root)

        self.var = DoubleVar()
        self.var.set(float(0.00))
        self.var2 = DoubleVar()
        self.var2.set(float(0.00))
        self.var3 = DoubleVar()
        self.var3.set(float(0.00))

        self.entry1 = Entry(root, textvariable=self.var)
        self.entry1.grid(row=2, column=1)
        self.entry2 = Entry(root, textvariable=self.var2)
        self.entry2.grid(row=3, column=1)
        self.entry3 = Entry(root, textvariable=self.var3)
        self.entry3.grid(row=4, column=1)


        self.total = DoubleVar()
        self.total.set(float(0.00))

        self.totalSum = Label(root, textvariable=self.total, relief='sunken')
        self.totalSum.grid(row=5, column=1)


    def totalSum(self):
        self.total.set(self.var.get() + self.var2.get() + self.var3.get())



root = Tk()
app = App(root)
root.title("help")
root.mainloop()

【问题讨论】:

  • 您有一个名为 .totalSum 的方法,但您使用名为 .totalSum 的标签来隐藏它。
  • 您的 totalSum 方法永远不会被调用。如果我理解正确,您希望每次三个数字之一发生变化时总和自动更新?
  • 啊,我可以看到@Aran-Fey 你的权利,这正是我想要的。我试图将我的函数名称更改为 sumTotal,但是没有用。

标签: python tkinter label tkinter-entry


【解决方案1】:

totalSum 方法永远不会被调用。

我创建了一个调用该方法并计算总和的按钮。

另外,我更改了方法名称,因为您已经有一个名为 totalSum 的标签。

calculateTotalSum方法需要在__init__方法内部调用。

这是工作代码:

from tkinter import *

class App(Frame):

    def __init__(self, root=None):
        Frame.__init__(self, root)

        self.var = DoubleVar()
        self.var.set(float(0.00))
        self.var2 = DoubleVar()
        self.var2.set(float(0.00))
        self.var3 = DoubleVar()
        self.var3.set(float(0.00))

        self.entry1 = Entry(root, textvariable=self.var)
        self.entry1.grid(row=2, column=1)
        self.entry2 = Entry(root, textvariable=self.var2)
        self.entry2.grid(row=3, column=1)
        self.entry3 = Entry(root, textvariable=self.var3)
        self.entry3.grid(row=4, column=1)


        self.total = DoubleVar()
        self.total.set(float(0.00))

        self.totalSum = Label(root, textvariable=self.total, relief='sunken')
        self.totalSum.grid(row=5, column=1)

        def calculateTotalSum():
            self.total.set(self.var.get() + self.var2.get() + self.var3.get())

        self.button = Button(root, text="Calculate", command=calculateTotalSum)
        self.button.grid(row=6, column=1)


root = Tk()
app = App(root)
root.title("help")
root.mainloop()

【讨论】:

  • 是否可以让它自动更新?没有按钮。
  • @Math 更改 EntryBox 值的值时不会发生任何事件。如果有可能调用该方法,但不可能,因为它需要一个事件。
  • @Math 之类的。您可以将事件处理程序绑定到每个在按下键或鼠标按钮时调用求和方法的条目。例如,使用您的原始方法名称,self.entry1.bind("<Key>", self.totalSum); self.entry1.bind("<Button>", self.totalSum) 等。
  • @PM2Ring 是的,但这仍然不是自动的,需要按键。
  • 如何在不使用按键或鼠标按键的情况下更改条目的值?
猜你喜欢
  • 2020-06-13
  • 2019-12-06
  • 2011-12-15
  • 1970-01-01
  • 2022-01-23
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多