当按钮触发kivy中的函数时,代码崩溃



我想在按下按钮时触发一封电子邮件。email()功能通过smtp邮件服务器发送电子邮件。点击按钮后,会发送一封电子邮件,但应用程序会立即崩溃,并出现错误

TypeError: email() takes 1 positional argument but 2 were given

我如何改进代码,使应用程序在按下按钮后不会崩溃?

这是代码

# import kivy module
import kivy
import smtplib
kivy.require("1.11.1")
from kivy.app import App
from kivy.uix.button import Button

# class in which we are creating the button
class ButtonApp(App):
def build(self):
# use a (r, g, b, a) tuple
btn = Button(text="Send Email !",
font_size="20sp",
background_color=(1, 1, 1, 1),
color=(1, 1, 1, 1),
size=(32, 32),
size_hint=(.2, .2),
# on_press = root.email,
pos=(300, 250))
btn.bind(on_press = self.email)
return btn
def email(self):
s = smtplib.SMTP('smtp.gmail.com', 587)
s.starttls()
s.login("BLAHBLAH@gmail.com", "hjqqKJSN98")
message = "n Hello "
s.sendmail("blahblah@gmail.com", "receiver@gmail.com", message)
# terminating the session
s.quit()
return
root = ButtonApp()
root.run()

当您从Button调用函数时,它会向该函数发送一个对象,这是第二个参数错误。所以你可以把它放在*args中,然后忘记它:

def email(self, *args):

最新更新