“事件”对象没有属性“ e3”

时间:2018-10-19 06:35:38

标签: python python-3.x tkinter

  • 嗨,我是python的新手,我一直在尝试构建一个简单的计算器,其中有三个框,第一个框有一个 预定义号码。
  • 第二个框是用户输入,第三个框是必须显示前两个数字的乘积。

  • 但是我是一个错误的“事件”对象,没有属性“ e3”

请帮助

    from tkinter import *

    class Calculator(Frame):
        def Widgets(self):
            self.e1 = Entry(self)
            self.e1.grid(row=1, column=1)
            self.e1.insert(0,1)

            self.e3 = Entry(self)
            self.e3.grid(row=1, column=3)

            def estimation_value_1(self):
                self.e3.insert(0, ((e1.get())*(e2.get())))

            self.e2 = Entry(self)
            self.e2.grid(row=1, column=2)
            self.e2.bind("<Return>", estimation_value_1)

        def __init__(self,initial):
            super(Calculator,self).__init__(initial)
            self.grid()
            self.Widgets()

    Window = Tk()
    Window.title("Error")
    Window.geometry("500x500")
    Evaluation_Tool = Calculator(Window)
    Window.mainloop()

2 个答案:

答案 0 :(得分:0)

def estimation_value_1(self):
    self.e3.insert(0, ((e1.get())*(e2.get())))

回调函数estimation_value_1的第一个参数是KeyPress事件。在您的函数中,self是KeyPress事件,而不是Calculator对象。

您可以通过以下方式实现:

def estimation_value_1(event):
    self.e3.insert(0, ((self.e1.get())*(self.e2.get())))

答案 1 :(得分:0)

现在您可以按照尹的建议进行操作了。但是,需要稍作修正。只需将e1.get和e2.get转换为float即可使其工作

(from item in searcher.Get().Cast<ManagementObject>()
                        where ((UInt32?)item["ProcessId"]).HasValue && ((UInt32?)item["ProcessId"]).Value == processID
                        select new Win32Process()
                        {
                            ExecutablePath = System.Convert.ToString(item["ExecutablePath"]),
                            ProcessId = (UInt32?)item["ProcessId"],
                        }).ToArray();