Ошибка определения позиции метода bind () - PullRequest
0 голосов
/ 07 ноября 2018

В моем проекте я добавил метод связывания с кнопкой.

subbutton = Button(self, text='Submit', width=10)
subbutton.grid(row=10, column=0, sticky='w')
subbutton.bind('<Button-1>', lambda e: controller.showframe(Moderator),
                       teacher_input(name.get(), idd.get(), username.get(), pas.get()),
                       MakeQuestion.qcurrent_user(username.get()), ExaminPaper.ecurrent_user(username.get()) )

Эти шоу bind имеют от 1 до 4 позиционных аугментов, которые вы дали 5 . Почему это происходит?

1 Ответ

0 голосов
/ 07 ноября 2018

Кажется, вы думаете, что все ваши вызовы функций являются частью lambda, а они - нет. В настоящее время только controller.showframe(Moderator), есть. Если вы хотите запустить несколько функций из вашего lambda, поместите их в список вроде:

subbutton.bind('<Button-1>', lambda e: [controller.showframe(Moderator),
                       teacher_input(name.get(), idd.get(), username.get(), pas.get()),
                       MakeQuestion.qcurrent_user(username.get()),
                       ExaminPaper.ecurrent_user(username.get())] )

Однако, добавление многих функций в один вызов lambda делает ваш код довольно сложным для понимания и отладки. Возможно, вам лучше создать дополнительную функцию для привязки к кнопке и вызова дополнительных функций оттуда. Вам также не нужно использовать bind, поскольку у кнопки tkinter есть опция command:

def buttonClick():
    controller.showframe(Moderator)
    teacher_input(name.get(), idd.get(), username.get(), pas.get())
    MakeQuestion.qcurrent_user(username.get())
    ExaminPaper.ecurrent_user(username.get())

subbutton = Button(self, text='Submit', width=10, command=buttonClick)
subbutton.grid(row=10, column=0, sticky='w')
...