Установите или снимите флажок, используя другой флажок, используя kivy - PullRequest
0 голосов
/ 03 мая 2020

У меня есть 2 флажка, в которых они должны работать следующим образом:

Если первый снимается без проверки (включить участников проекта), а второй уже проверен (разрешить использование только ..), он получит не проверено также. Но когда я проверю первый, второй останется без проверки. Кроме того, есть логическая переменная only_def_actors, которую необходимо установить на False, если второй флажок снят.

Я пробовал это, но я получаю объект `TypeError: 'bool' не отозваны. Я не знаю, какой атрибут я должен изменить, чтобы он работал. Или, может быть, это проще сделать?

В main.kv:

#defined id of checkbox to use in .py
only_def_act: only_def_actors


Label:
    text: "Enable project actors"
CheckBox:
    on_active: root.actors_checkbox_click(self, self.active)
    active: True

Label:
    text: "Allow using only defined actors"
CheckBox:
    id: only_def_actors
    on_active: root.only_def_actors_checkbox_click(self, self.active)

В main.py:

#defined variables
only_def_act = ObjectProperty(None)
actors_status = BooleanProperty(True) #this one is set to be checked by default
only_def_actors = BooleanProperty(False) #this one is set to be unchecked by default

# Callback for the checkbox
def only_def_actors_checkbox_click(self, instance, value):
    if value is True:
        self.only_def_actors = True
        print("T")
    else:
        self.only_def_actors = False
        self.only_def_act.active(False)
        print("F")

# Callback for the checkbox
def actors_checkbox_click(self, instance, value):
    if value is True:
        self.actors_status = True
        print("T")
    else:
        self.actors_status = False
        self.only_def_actors_checkbox_click(instance, False)
        print("F")

1 Ответ

1 голос
/ 03 мая 2020

Вы получаете сообщение об ошибке из этой строки:

self.only_def_act.active(False)

, который пытается вызвать атрибут CheckBox active (который является BooleanProperty), как если бы это был метод.

Возможно, вы имели в виду:

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