Сбой кода, когда кнопка запускает функцию в киве - PullRequest
0 голосов
/ 23 февраля 2020

Я хочу вызвать электронное письмо при нажатии кнопки. Функция email() отправляет электронное письмо через почтовый SMTP-сервер. При нажатии на кнопку отправляется электронное письмо, но приложение немедленно вылетает с ошибкой

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

Как улучшить код, чтобы приложение не обрабатывало sh после нажатия кнопки?

вот код

# 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()

1 Ответ

0 голосов
/ 23 февраля 2020

Когда вы вызываете функцию из Button, она отправляет объект этой функции, о чем говорит второй аргумент об ошибке. Таким образом, вы можете поместить его в * args и забыть об этом:

def email(self, *args):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...