Как поставить галочку для включения кнопки в Tkinter - PullRequest
0 голосов
/ 22 февраля 2020
self.label_5 = tk.Checkbutton(self.master, text="I agree to the", bg='white', width=14,font=("Arial", 8), command= activator)
self.label_5.place(x=112, y=410)
self.button_2 = tk.Button(text='Proceed', width=20, bg='white', state = tk.DISABLED, bd=1, 
highlightbackground='black', font=("Arial", 10)).place(x=208, y = 512)

def activator(button):
    if (self.button_2 ['state'] == tk.DISABLED):
        self.button_2 ['state'] = tk.NORMAL
    else:
        self.button_2['state'] = tk.DISABLED

Я хочу включить кнопку продолжения после того, как проверил кнопку-флажок, но, похоже, не могу понять.

1 Ответ

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

Вы должны внести следующие изменения в свой код:

  • Вы должны ссылаться на функцию с именем activator как self.activator при передаче ее Button (button_2 ) как command.
  • Вы должны изменить parameter с именем button функции с именем activator на self.
  • И самое важное, что вам нужно сделать, это переместить часть кода, где вы размещаете Button (button_2) и Checkbutton (label_5), на новую строку. Как я сделал в коде ниже. Причина этого заключается в том, что pack, grid и place всегда return None. И когда вы делаете это в той же строке, где вы создали свои виджеты и присвоили их переменной, т.е. button_2 и label_5, значение None сохраняется в этом виджете.

Вот исправленный код:

import tkinter as tk


class Test:
    def __init__(self):
        self.master = tk.Tk()
        self.master.geometry('550x550')

        self.label_5 = tk.Checkbutton(self.master, text="I agree to the", bg='white', width=14, font=("Arial", 8),
                                      command=self.activator)
        self.label_5.place(x=112, y=410)

        self.button_2 = tk.Button(text='Proceed', width=20, bg='white', state=tk.DISABLED, bd=1,
                                  highlightbackground='black', font=("Arial", 10))
        self.button_2.place(x=208, y=512)

        self.master.mainloop()

    def activator(self):

        if self.button_2['state'] == tk.DISABLED:
            self.button_2['state'] = tk.NORMAL

        else:
            self.button_2['state'] = tk.DISABLED


if __name__ == '__main__':
    Test()

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