我正在学习编程接口,我面临以下问题:
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()
谢谢。
答案 0 :(得分:1)
您的Calculadora
课程中存在一些问题(班级名称通常是大写的)
您在entry1
函数中使用entry2
和soma
,但未在__init__
方法之外定义它们,因此您需要将它们更改为{{ 1}}能够从self.entry1/2
函数访问它们。
soma
也是如此,但由于labelR
返回Label(frame,text='[Aqui]').pack(side=TOP)
,None
为labelR
。您需要将标签创建与包装分开。
对于None
函数,soma
和a
是无用的参数,应删除,我删除了b
前面的self
a
b
因为这里没有必要。
以下是代码:
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
方法需要三个参数:self
,a
和b
。暂时缺少这些。
编辑:
如果您想解决这些问题,请将它们包含在您的命令中
self.somar = Button(root,text = 'SOMAR',command = lambda: self.soma(True, False)
在这里,您将使用a = True和b = False调用您的soma方法
或者您也可以删除躯体中的a和b参数,它们暂时无用。