Исключение в обратном вызове Tkinter (последний вызов последним): - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю над проектом и хочу использовать значение электронной почты из одного пакета в другой, чтобы использовать это значение для обновления данных, но я получаю эту ошибку

Exception in Tkinter callback

Traceback (самая последняяпоследний вызов):

Файл "C: \ Program Files (x86) \ Python37-32 \ lib \ tkinter__init __. py", строка 1705, в вызов возврат self.func (* аргументы)

Файл "D: / Скучный колледж / PyProject / MCB2 / sign_up_2.py", строка 69, в signup_button_click sign_up_1.SignUp.send_email ())) TypeError: send_email () отсутствует 1 обязательный позиционный аргумент: 'self '

Когда я ввожу self в send_email (), он говорит, что ожидаемый тип' SignUp 'получил' SafetyQuestion ', вместо этого SignUp - это имя класса, присутствующего в sign_up_1

Это код, который создаетошибка:

from tkinter import *
from tkinter.ttk import *
from sqlite3 import *
from tkinter import messagebox
import sign_up_1
import Home_page


class SafetyQuestion(Tk):
    def __init__(self, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)

        self.title("Contact Book")
        self.geometry('500x400')

        self.style = Style()
        self.style.configure('Head.TFrame', background='Blue')

        self.head_frame = Frame(self, style='Head.TFrame')
        self.head_frame.pack(side=TOP, fill=X)

        self.style.configure('Head.TLabel', foreground='White', background='Blue', font=(NONE, 15))

        self.head_label = Label(self.head_frame, text='Select one of the following Question:',
                                style='Head.TLabel')
        self.head_label.pack(pady=3)

        val = StringVar()
        # val.set('Empty')

        self.r1 = Radiobutton(self, text='What is your nickname?', variable=val, value='What?')                
        self.r1.pack(anchor=W, pady=10, padx=10)
        self.r2 = Radiobutton(self, text='What is the name of your pet?', variable=val,
                              value='What is the name of your pet?')
        self.r2.pack(anchor=W, pady=10, padx=10)
        self.r3 = Radiobutton(self, text='What is your favourite food?', variable=val,
                              value='What is your favourite food?')
        self.r3.pack(anchor=W, pady=10, padx=10)
        self.r4 = Radiobutton(self, text='What ia your favourite Bike?', variable=val,
                              value='What ia your favourite Bike?')
        self.r4.pack(anchor=W, pady=10, padx=10)

        self.answer_frame = Frame(self, style='Head.TFrame')
        self.answer_frame.pack(side=BOTTOM, fill=X)

        self.style.configure('Ans.TLabel', foreground='White', background='Blue', font=(NONE, 12))

        self.ans_label = Label(self.answer_frame, text='Answer:', style='Ans.TLabel')
        self.ans_label.grid(row=0, column=0, pady=2)

        self.style.configure('Ans.TEntry', foreground='Red', font=(NONE, 12))

        self.ans_entry = Entry(self.answer_frame, style='Ans.TEntry', width=25)
        self.ans_entry.grid(row=0, column=1, pady=2)

        self.style.configure('Ans.TButton', forefround='Blue', font=(NONE, 12))

       self.ans_sub_button = Button(self.answer_frame, text='Sign Up', style='Ans.TButton',
                                    command=self.signup_button_click)
       self.ans_sub_button.grid(row=0, column=2, pady=10, padx=150)

    def signup_button_click(self):
        signup_con = connect('AppDatabase.db')
        signup_cur = signup_con.cursor()
        signup_cur.execute("""update LoginData 
                            set Question='{0}', Answer='{1}'
                             where Email='{1}'""".format(self.val.get(),
                                                         self.ans_entry.get(),
                                                        sign_up_1.SignUp.send_email()))
        signup_con.commit()
        signup_con.close()
        messagebox.showinfo('Successful', 'Successfully Signed Up')
        self.destroy()
        Home_page.HomePage()


if __name__ == "__main__":
    safety_question = SafetyQuestion()
    safety_question.mainloop()

1 Ответ

2 голосов
/ 23 сентября 2019

Кажется простой ошибкой.Вы на самом деле не сохраняете переменную val как переменную экземпляра.Вызов val = StringVar() создает одноразовую переменную, на которую вы теряете ссылку после завершения работы метода __init__.Легко исправить:

self.val = StringVar()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...