两个缺少位置参数错误

时间:2017-01-10 17:04:28

标签: python function tkinter

我正在学习编程接口,我面临以下问题:

soma() missing 2 required positional arguments: 'a' and 'b'.

如果有人能帮我解决这个问题我很感激。我在下面提供了我的代码:

from tkinter import*

class calculadora:
    def __init__(self,master):
        frame=Frame(master)
        frame.pack()
        self.somar = Button(root,text = 'SOMAR',command = self.soma)
        self.somar.pack(side=TOP)
        entry1 = Entry(frame)
        entry1.pack(side=BOTTOM)
        entry2 = Entry(frame)
        entry2.pack(side=BOTTOM)
        labelR=Label(frame,text='[Aqui]').pack(side=TOP)

    def soma(self,a,b):
        self.a = int(entry1.get())
        self.b = int(entry2.get())
        labelR['text'] = self.a+self.b



root = Tk()
root.title("Calculadora")
root.geometry("300x300+200+200")
x =calculadora(root)

root.mainloop()

谢谢。

2 个答案:

答案 0 :(得分:1)

您的Calculadora课程中存在一些问题(班级名称通常是大写的)

  1. 您在entry1函数中使用entry2soma,但未在__init__方法之外定义它们,因此您需要将它们更改为{{ 1}}能够从self.entry1/2函数访问它们。

  2. soma也是如此,但由于labelR返回Label(frame,text='[Aqui]').pack(side=TOP)NonelabelR。您需要将标签创建与包装分开。

  3. 对于None函数,somaa是无用的参数,应删除,我删除了b前面的self

    中的a
    b

    因为这里没有必要。

  4. 以下是代码:

    self.a = int(entry1.get())
    self.b = int(entry2.get())
    

答案 1 :(得分:0)

self.somar = Button(root,text = 'SOMAR',command = self.soma)

该行定义每次单击按钮时,它将调用self.soma,这意味着它将以对象作为第一个参数调用soma方法。

但是,您的soma方法需要三个参数:selfab。暂时缺少这些。

编辑:

如果您想解决这些问题,请将它们包含在您的命令中

self.somar = Button(root,text = 'SOMAR',command = lambda: self.soma(True, False)

在这里,您将使用a = True和b = False调用您的soma方法

或者您也可以删除躯体中的a和b参数,它们暂时无用。